设置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 复制属性。