问题是:如果从类型Root
继承,如何编写阻止删除实体引用的约定?
我正在使用流利的nhibernate,它是自动映射功能。默认情况下启用级联删除。
在我需要实际删除引用另一个的聚合根时,一切都非常酷,直到我终于遇到了这种情况。
我有根User
和Application
。 User
注册Applications
。如果它被错误地注册,那么User
角色Admin
可以删除它的时间差很小(我确信我不会需要那些数据)。
当User
删除Application
时,由于级联删除,nhibernate会删除User
本身(这很讽刺......)。
我不确定如何为Application->仅限用户关联指定SaveUpdate级联:
诀窍是什么:
m.References(x=>x.RegisteredBy).Cascade.SaveUpdate(); //RegisteredBy.Type==User
此外,告诉fnh在哪里寻找覆盖:
var m=new AutoPersistenceModel(storeCfg);
m.UseOverridesFromAssembly(assembly);
答案 0 :(得分:1)
您可以覆盖Application->用户关联的级联行为。您需要设置SaveUpdate()而不是all-delete-orphan。
为此,您需要实施IAutomappingOverride<Application>