Какова цель метода KeyUpdate в Fluent NHiberate? - PullRequest
1 голос
/ 01 сентября 2010

У меня есть коллекция, сопоставленная как свойство только для запроса, следующее Пример Ayende . Мое отображение:

HasMany<Employee>(Reveal.Member<Company>("_employees")).Access.None();

Это работало нормально, за исключением случаев, когда я загружаю Компанию, внешний ключ Employee.CompanyId обновляется до нуля. Это происходит, даже если я не обновляю Company, и сгенерированный SQL включает только CompanyId в список обновлений, хотя я не назначил сотрудника для обновления только измененных свойств.

Я попытался использовать NoOp (я думаю, это синонимы) и объявить коллекцию сотрудников как публичное свойство, а не как частное поле. Я наконец смог исправить это, изменив отображение на:

HasMany (Reveal.Member ( "_ сотрудников")) Access.None () Not.KeyUpdate ();..

Какова цель KeyUpdate и каково эквивалентное сопоставление XML? Почему это необходимо для свойства только для запроса? Я предполагал, что установка доступа к none или noop предотвратит любые изменения.

1 Ответ

1 голос
/ 23 ноября 2010

Jamie

Вы можете сгенерировать hbms из вашей AutoPersistenceModel и посмотреть xml, если вы все еще заинтересованы. Просто что-то вроде

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

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

НТН,
Berryl

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...