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; }
}
嗯,在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,当想要在其他地方重用现有数据模型时,它是首选,它也可用作良性当您想要包含对 属性.
细粒度外键选项
[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; }
}