0

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


我正在使用流利的 nhibernate 和它的自动映射功能。默认开启级联删除。

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

我有根UserApplication. User注册ApplicationsUser如果它被错误地注册了,那么角色可以删除它的时间间隔很小Admin(我很确定我永远不需要这些数据)。

Userremoves时Application,由于级联删除,nhibernate 会User自行删除(具有讽刺意味的是......)。


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

替代文字


诀窍:

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

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

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

1 回答 1

1

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

于 2010-11-07T14:35:17.733 回答