(流畅)NHibernate:在删除时将外键强制为null

时间:2010-10-19 17:02:46

标签: nhibernate fluent-nhibernate

我有一个标准的父 - 子(1:很多)关系,使用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)

1 个答案:

答案 0 :(得分:1)

虽然不可能开箱即用,但你可以实现一个IPreDeleteEventListener来激活HQL更新,将Items的Item Category设置为null。