我有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

10-01 14:23