Ответ 1
Это нормальное поведение. Вы можете попробовать добавить dynamic-update="true"
в определение класса, чтобы переопределить это поведение.
Я выполняю стандартное обновление в NHibernate для одного свойства. Однако при фиксации транзакции обновление sql, по-видимому, устанавливает все поля, которые я отобразил на таблице, хотя они не изменились. Неужели это не может быть нормальным поведением в Нюбернате? Я делаю что-то неправильно? Благодаря
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. Вы можете использовать сгенерированный атрибут для своих свойств, чтобы изменить поведение. Подробности на блог Айенде.
Почему это значение по умолчанию связано с тем, что с динамикой вы не получаете свой план запроса в кеше. И, как правило, вы не возражаете, что вы отправляете несколько байт по высокоскоростному сетевому соединению между вашим сервером приложений и базой данных. Если вы не сохраняете длинные строки, где эта настройка идеально подходит.