2010-08-31 3 views
1

У меня есть коллекция, отображаемая как свойство запроса только после 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 не помешает любым изменениям.

+1

Согласно http://fluentnhibernate.org/api/FluentNHibernate.Mapping/OneToManyPart'1.htm (извините, ссылка не появляется с '\' '), он указывает, что ключ может быть обновлен. Я не уверен, что это имеет какое-то отношение к тому, что вы видите. – Jay

+0

Это все еще «ошибка» в NH 3.2. –

ответ

1

Джейми

Вы можете генерировать ВСМБЫ из вашего AutoPersistenceModel и взглянуть на XML, если вы все еще заинтересованы. Просто что-то вроде

model.CompileMappings(); 
model.WriteMappingsTo(outputDir); 

Как в стороне, у вас было смотреть еще @ConfOrm. Я подозреваю, что это увеличит тягу, учитывая dev, но пока не потратил много времени.

НТН,
Berryl

+1

Как это ответить, какова цель для метода Fluent NHibernate KeyUpdate? –

Смежные вопросы