好吧,在ServiceStack中
在哪里可以阅读
的优缺点?
[References(typeof(ABC))]和
[ForeignKey(typeof(XYZ)]
它们用来做什么? (我知道,天真地说,但我很难找到基本描述)
答案 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; }
}