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流畅更新问题(一对多关系)

在阅读NHibernate在二次更新中设置外键而不是在初始插入时违反键列的Not-Null约束后,我发现我需要在HasMany关系中添加逆。

HasMany(x => x.FacilityCmList).KeyColumn("WHOLE_S").Fetch.Subselect().Inverse().Not.LazyLoad();