C# 聚合根的Fluent NHibernate级联删除约定

C# 聚合根的Fluent NHibernate级联删除约定,c#,nhibernate,fluent-nhibernate,conventions,automapping,C#,Nhibernate,Fluent Nhibernate,Conventions,Automapping,问题是:如果实体引用从类型根继承,如何编写防止删除实体引用的约定 我正在使用fluent nhibernate和它的自动映射功能。默认情况下启用级联删除 一切都很酷,直到我最终遇到了需要实际删除引用另一个根的聚合根的情况 我得到了rootUser和Application用户寄存器应用程序。如果它是错误注册的,那么有一个很小的时间间隔,用户和角色管理员可以删除它(我确信我永远都不需要这些数据) 当用户删除应用程序时,由于级联删除,nhibernate删除用户本身(多么讽刺…) 我不确定如何仅为

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


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

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

我得到了root
User
Application
<代码>用户
寄存器
应用程序
。如果它是错误注册的,那么有一个很小的时间间隔,
用户
和角色
管理员
可以删除它(我确信我永远都不需要这些数据)

用户
删除
应用程序
时,由于级联删除,nhibernate删除
用户
本身(多么讽刺…)


我不确定如何仅为应用程序->用户关联指定SaveUpdate级联:


关键在于:

m.References(x=>x.RegisteredBy).Cascade.SaveUpdate(); //RegisteredBy.Type==User
此外,告诉fnh在哪里查找覆盖:

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

您可以覆盖应用程序->用户关联的级联行为。您需要设置SaveUpdate(),而不是全部删除孤立项。
要做到这一点,您需要实现
IAutomappingOverride

我又有点困惑了。在我的问题中添加了图片。