我有2个实体在NHibernate中映射为一对多。这是父实体中的映射:
HasMany(x => x.RepairShopWeekDayProperties).KeyColumn("RepairShopId").AsSet().Cascade.AllDeleteOrphan();
这是子实体中的映射:
Map(x => x.RepairShopId).Column("RepairShopId").Not.Insert().Not.Update();
References(x => x.RepairShop).Column("RepairShopId").Not.Nullable();
当我尝试删除分配给维修店的所有WeekDayProperties时,如下所示:
rs.RepairShopWeekDayProperties.Clear();
我看到在事务提交时未删除WeekDayProperty实体-NHibernate只是尝试将RepairShopId设置为null。我究竟做错了什么?
最佳答案
要使所有工作正常进行,您应该使用inverse="true"
设置:
HasMany(x => x.RepairShopWeekDayProperties)
.Inverse() // here we go
.KeyColumn("RepairShopId")
.AsSet()
.Cascade
.AllDeleteOrphan();
检查以获取更多详细信息:21.3. Cascading lifecycle