我有一个标准的父 - 子(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)
答案 0 :(得分:1)
虽然不可能开箱即用,但你可以实现一个IPreDeleteEventListener
来激活HQL更新,将Items的Item Category设置为null。