Servicestack References 与 ForeignKey 中的数据注释

Data annotation in Servicestack References vs ForeignKey

嗯,在ServiceStack中
我在哪里可以了解
的优缺点 [参考资料(typeof(ABC))]和
[外键(类型(XYZ)]

它们的用途是什么? (我知道,说得比较天真,但我很难找到基本描述)

在整个 ServiceStack.OrmLite project page 中都引用了两者的文档。

对简单的外键使用其中一个

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

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

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

[References] 属性也被其他数据持久性库使用,例如 PocoDynamo for DynamoDb,当想要在其他地方重用现有数据模型时,它是首选,它也可用作良性当您想要包含对 属性.

关联类型的可导航引用时,不同模型上的 "marker" 属性

细粒度外键选项

[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; }
}