设置UserAuth delete cascade 不添加对ServiceModel的依赖
Set UserAuth delete cascade without adding dependency to ServiceModel
如果用户被删除,我想确保删除一些实体,所以我将它们的模型设置为与 OrmLite 一起使用:
public class UserProcess
{
[AutoIncrement]
public int Id { get; set; }
[ForeignKey(typeof(UserAuth), OnDelete = "CASCADE")]
public string UserAuthId { get; set; }
// ... Other properties
}
这可行,但它需要我将 ServiceStack nuget 包添加到 ServiceModel 项目,因为 UserAuth
未在 ServiceStack.Interfaces
包中定义。
我不想将依赖项添加到 class 库。有更好的方法吗?
您可以在启动时动态添加属性,例如:
typeof(UserProcess)
.AddAttributes(new ForeignKeyAttribute {...});
或者在创建 table 之后创建外键,可以手动创建,也可以在创建 table 之后使用 [PostCreateTable] attribute to execute custom SQL。
另一种方法是创建一个没有任何依赖关系的单独 DTO,然后使用 AutoMapping Utils 复制属性。
如果用户被删除,我想确保删除一些实体,所以我将它们的模型设置为与 OrmLite 一起使用:
public class UserProcess
{
[AutoIncrement]
public int Id { get; set; }
[ForeignKey(typeof(UserAuth), OnDelete = "CASCADE")]
public string UserAuthId { get; set; }
// ... Other properties
}
这可行,但它需要我将 ServiceStack nuget 包添加到 ServiceModel 项目,因为 UserAuth
未在 ServiceStack.Interfaces
包中定义。
我不想将依赖项添加到 class 库。有更好的方法吗?
您可以在启动时动态添加属性,例如:
typeof(UserProcess)
.AddAttributes(new ForeignKeyAttribute {...});
或者在创建 table 之后创建外键,可以手动创建,也可以在创建 table 之后使用 [PostCreateTable] attribute to execute custom SQL。
另一种方法是创建一个没有任何依赖关系的单独 DTO,然后使用 AutoMapping Utils 复制属性。