首页 > 解决方案 > Servicestack References 与 ForeignKey 中的数据注释

问题描述

好吧,在 ServiceStack中,我可以在哪里阅读 [References(typeof(ABC))] 和 [ForeignKey(typeof(XYZ)]
的优缺点

它们是用来做什么的?(我知道,相当天真,但我很难找到基本描述)

标签: servicestackdata-annotationsormlite-servicestack

解决方案


两者的文档都在整个ServiceStack.OrmLite 项目页面中引用。

用于简单的外键

本质上,它们都等同于定义简单的外键,您可以将其用于:

[References(typeof(ForeignKeyTable1))]
public int SimpleForeignKey { get; set; }

[ForeignKey(typeof(ForeignKeyTable1))]
public int SimpleForeignKey { get; set; }

[References]属性也被其他数据持久性库(如PocoDynamo for DynamoDb)使用,当您想要在其他地方重用现有数据模型时,它会是首选,当您想要包含时,它也可用作不同模型上的良性“标记”属性对属性关联类型的可导航引用。

细粒度外键选项

[ForeignKey]是特定于 OrmLite 的,并且包括额外的细粒度选项,用于定义特定于 RDBMS 的外键关系,例如不同的级联选项,例如:

public class TableWithAllCascadeOptions
{
    [AutoIncrement] public int Id { get; set; }

    [ForeignKey(typeof(ForeignKeyTable1))]
    public int SimpleForeignKey { get; set; }

    [ForeignKey(typeof(ForeignKeyTable2), OnDelete = "CASCADE", OnUpdate = "CASCADE")]
    public int? CascadeOnUpdateOrDelete { get; set; }

    [ForeignKey(typeof(ForeignKeyTable3), OnDelete = "NO ACTION")]
    public int? NoActionOnCascade { get; set; }

    [Default(typeof(int), "17")]
    [ForeignKey(typeof(ForeignKeyTable4), OnDelete = "SET DEFAULT")]
    public int SetToDefaultValueOnDelete { get; set; }

    [ForeignKey(typeof(ForeignKeyTable5), OnDelete = "SET NULL")]
    public int? SetToNullOnDelete { get; set; }
}

推荐阅读