Обновление NHibernate для одного свойства обновляет все свойства в SQL - PullRequest
13 голосов
/ 02 мая 2009

Я выполняю стандартное обновление в NHibernate для одного свойства. Однако при фиксации транзакции обновление sql, похоже, устанавливает все поля, которые я отобразил в таблице, даже если они не изменились. Конечно, это не может быть нормальным поведением в Nhibernate? Я делаю что-то неправильно? Спасибо

using (var session = sessionFactory.OpenSession())
           {
               using (var transaction = session.BeginTransaction())
               {
                   var singleMeeting = session.Load<Meeting>(10193);
                   singleMeeting.Subject = "This is a test 2";

                   transaction.Commit();
               }
           }

Ответы [ 2 ]

16 голосов
/ 02 мая 2009

Это нормальное поведение. Вы можете попробовать добавить dynamic-update="true" к определению вашего класса, чтобы переопределить это поведение.

3 голосов
/ 02 мая 2009

Хорошо. да, это нормальное поведение для NHibernate. Вы можете использовать сгенерированный атрибут для ваших свойств, чтобы изменить поведение. Подробности в блоге Айенде .

Почему это значение по умолчанию, потому что в динамике вы не кэшируете план запроса. И обычно вы не возражаете, что отправляете еще несколько байтов по высокоскоростному сетевому соединению между сервером приложений и базой данных. Если вы не сохраняете длинные строки, где этот параметр идеально подходит.

...