Быстрая проблема обновления NHibernate (отношение один ко многим) - PullRequest
1 голос
/ 19 июля 2011

У меня есть объект OtherFaclilityEntity, который содержит IList объектов 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();

    }

Когда я пытаюсь сделать SaveOrUpdate для объекта OtherFacility, он также обновляет все объектыв 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'

Я предполагаю, что это как-то связано с моим отображением, любымидеи?

1 Ответ

0 голосов
/ 20 июля 2011

После прочтения NHibernate устанавливает внешний ключ во вторичном обновлении, а не при начальной вставке, нарушая ограничение Not-Null для ключевого столбца Я обнаружил, что мне нужно добавить Inverse к отношению HasMany.

HasMany(x => x.FacilityCmList).KeyColumn("WHOLE_S").Fetch.Subselect().Inverse().Not.LazyLoad();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...