NHibernate流畅更新问题(一对多关系)
本文关键字:一对多 关系 新问题 更新 NHibernate | 更新日期: 2023-09-27 18:02:42
我有一个对象otherfacilityentity,它包含一个OtherFcs对象列表,映射如下:
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'
我想这与我的映射有关,有什么想法吗?
在阅读NHibernate在二次更新中设置外键而不是在初始插入时违反键列的Not-Null约束后,我发现我需要在HasMany关系中添加逆。
HasMany(x => x.FacilityCmList).KeyColumn("WHOLE_S").Fetch.Subselect().Inverse().Not.LazyLoad();