Обновление NHibernate для одного свойства обновляет все свойства в sql
-
03-07-2019 - |
Вопрос
Я выполняю стандартное обновление в 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();
}
}
Решение
Это нормальное поведение. Вы можете попробовать добавить dynamic-update = " true "
в определение класса, чтобы переопределить это поведение.
Другие советы
Что ж.да, это нормальное поведение для NHibernate.Вы можете использовать сгенерированный атрибут для своих свойств, чтобы изменить поведение.Подробности о Блог Айенде.
Это значение по умолчанию используется потому, что с помощью dynamics вы не кэшируете свой план запроса.И обычно вы не возражаете, что отправляете еще несколько байтов по высокоскоростному сетевому соединению между вашим сервером приложений и базой данных.Если только вы не сохраняете длинные строки, где этот параметр идеально подходит.