C# NHibernate fluent更新问题(一对多关系)
我有一个对象OtherFaclilityEntity,其中包含其他FCS对象的IList,映射如下:C# NHibernate fluent更新问题(一对多关系),c#,nhibernate,fluent-nhibernate,C#,Nhibernate,Fluent Nhibernate,我有一个对象OtherFaclilityEntity,其中包含其他FCS对象的IList,映射如下: public OtherFacilityMap() { Schema("SOME"); Table("OTHER_FACILITY"); Id(x => x.Id, "OTHER_FACILITY_S").GeneratedBy.TriggerIdentity(); Map(x => x.RowCrea
public OtherFacilityMap()
{
Schema("SOME");
Table("OTHER_FACILITY");
Id(x => x.Id, "OTHER_FACILITY_S").GeneratedBy.TriggerIdentity();
Map(x => x.RowCreator, "ROW_CREATOR");
Map(x => x.RowCreateDate, "ROW_CREATE_DATE");
Map(x => x.Description, "DESCRIPTION");
Map(x => x.ExistenceKdNm, "R_EXISTENCE_KD_NM");
References(x => x.FacilityClassItem, "FACILITY_CLASS_S").LazyLoad(Laziness.False).Fetch.Join().Not.Insert().Not.Update();
HasMany(x => x.FacilityCmList).KeyColumn("WHOLE_S").Fetch.Subselect().Not.LazyLoad();
}
当我尝试对OtherFacility实体执行SaveOrUpdate时,它也会更新FacilityCmList中的所有实体,这很好,但在上次运行的sql中,它会尝试删除父对象和子对象之间的所有关系:
NHibernate.SQL: 2011-07-19 10:29:33,111 [361] DEBUG NHibernate.SQL [(null)] - UPDATE SOME.FACILITY_CMS SET WHOLE_S = null WHERE WHOLE_S = :p0;:p0 = '26021842'
我想这与我的映射有关,有什么想法吗?阅读后,我发现我需要在HasMany关系中添加反向
HasMany(x => x.FacilityCmList).KeyColumn("WHOLE_S").Fetch.Subselect().Inverse().Not.LazyLoad();
如图所示,使用“反向”解决了问题:您应该将其标记为答案,而不是注释。由于代表性较低,我必须等待8小时才能完成此操作: