(Fluent)NHibernate:删除时强制外键为null

(Fluent)NHibernate:删除时强制外键为null,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我有一个标准的父子关系(1:many),使用Fluent NHibernate配置: 在家长方面: HasMany(x => x.Items).Inverse().Cascade.All(); 在儿童方面: Map(x => x.ItemCategory).Nullable().Index("idx_item_category").Not.LazyLoad() (根据epitka的评论编辑:) 通过调用删除记录 session.Delete(item_category) 这是事

我有一个标准的父子关系(1:many),使用Fluent NHibernate配置:

在家长方面:

HasMany(x => x.Items).Inverse().Cascade.All();
在儿童方面:

Map(x => x.ItemCategory).Nullable().Index("idx_item_category").Not.LazyLoad()
(根据epitka的评论编辑:)

通过调用删除记录

session.Delete(item_category)
这是事务中完成的唯一操作

(结束编辑)

当前,当我删除一个ItemCategory记录时,它会将删除级联到所有项目,根据文档,这似乎是按预期工作的

我希望在删除ItemCategory记录时,Item.ItemCategory自动设置为null

我似乎只能完全关闭级联,这会导致数据库损坏(项目引用缺少的类别)。因此,目前我必须手动执行此操作,这比我希望的更容易出错

是否可以配置此行为?

session.Delete(item_category)

如果无法开箱即用,您可能可以实现一个
IPreDeleteEventListener
,它触发HQL更新以将项的itemcegory设置为null。

如果无法开箱即用,您可能可以实现一个触发HQL更新的
IPreDeleteEventListener
,将项目的ItemCategory设置为null。

如何删除它?您是从集合中删除它,还是发出HQL delete或其他命令。给我们看看代码…你是如何删除它的?您是从集合中删除它,还是发出HQL delete或其他命令。给我们看代码。。。