Fluent NHibernate级联删除约定聚合根

时间:2010-11-07 14:01:49

标签: c# nhibernate fluent-nhibernate conventions automapping

问题是:如果从类型Root继承,如何编写阻止删除实体引用的约定?


我正在使用流利的nhibernate,它是自动映射功能。默认情况下启用级联删除。

在我需要实际删除引用另一个的聚合根时,一切都非常酷,直到我终于遇到了这种情况。

我有根UserApplicationUser注册Applications。如果它被错误地注册,那么User角色Admin可以删除它的时间差很小(我确信我不会需要那些数据)。

User删除Application时,由于级联删除,nhibernate会删除User本身(这很讽刺......)。


我不确定如何为Application->仅限用户关联指定SaveUpdate级联:

alt text


诀窍是什么:

m.References(x=>x.RegisteredBy).Cascade.SaveUpdate(); //RegisteredBy.Type==User

此外,告诉fnh在哪里寻找覆盖:

var m=new AutoPersistenceModel(storeCfg);
m.UseOverridesFromAssembly(assembly);

1 个答案:

答案 0 :(得分:1)

您可以覆盖Application-&gt;用户关联的级联行为。您需要设置SaveUpdate()而不是all-delete-orphan。 为此,您需要实施IAutomappingOverride<Application>