У меня есть коллекция, отображаемая как свойство запроса только после Ayende's example. Мое отображение:Какова цель KeyUpdate метода Fluent NHiberate?
HasMany<Employee>(Reveal.Member<Company>("_employees")).Access.None();
Это работало отлично, за исключением того, когда я загружаю компании внешнего ключа Employee.CompanyId обновляется до нуля. Это происходит, даже если я не обновляю компанию, и сгенерированный SQL включает в себя только CompanyId в списке обновлений, хотя я не сопоставил Employee для обновления измененных свойств.
Я пробовал использовать NoOp
(они, я думаю, синонимы) и объявляет коллекцию сотрудников как публичное свойство, а не частное поле. Я, наконец, смог исправить это, изменив отображение на:
HasMany (Reveal.Member («_ employees»)). Access.None(). Not.KeyUpdate();
Какова цель KeyUpdate и что такое эквивалентное сопоставление XML? Почему это необходимо для свойства запроса? Мое предположение заключалось в том, что установление доступа к никому или noop не помешает любым изменениям.
Согласно http://fluentnhibernate.org/api/FluentNHibernate.Mapping/OneToManyPart'1.htm (извините, ссылка не появляется с '\' '), он указывает, что ключ может быть обновлен. Я не уверен, что это имеет какое-то отношение к тому, что вы видите. – Jay
Это все еще «ошибка» в NH 3.2. –