我有两个实体在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。我做错了什么?
答案 0 :(得分:2)
要完成所有工作,您应该使用inverse="true"
设置:
HasMany(x => x.RepairShopWeekDayProperties)
.Inverse() // here we go
.KeyColumn("RepairShopId")
.AsSet()
.Cascade
.AllDeleteOrphan();
选中此处了解详情:21.3. Cascading lifecycle