Servicestack参考中的数据注释与ForeignKey

时间:2018-07-31 14:37:07

标签: servicestack data-annotations ormlite-servicestack

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

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

1 个答案:

答案 0 :(得分:2)

ServiceStack.OrmLite project page中都引用了这两个文档。

将其中一个用于简单的外键

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

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