я, кажется, что-то упустить здесь:NHibernate FlushMode.Commit авто сохраняет грязные объекты
У меня есть приложение, которое использует сессию в методе применения и использования отложенной загрузки.
Я установил сеанс FlushMode.Commit, и кажется, что NHibernate по-прежнему автоматически сохраняет мои грязные объекты в БД (SQLCe), хотя я никогда не начинаю транзакцию и не совершаю ее.
может ли кто-нибудь сказать мне, что я делаю неправильно?
часть моего кода:
public Repository(ISessionProvider sessionProvider)
{
_sessionProvider = sessionProvider;
_session = _sessionProvider.OpenSession();
_session.FlushMode = FlushMode.Commit;
}
public IList<T> GetAll<T>() where T : class
{
var criteria = _session.CreateCriteria<T>();
var list = criteria.List<T>();
return list;
}
Неявные транзакции создаются, если вы не создаете их по коду, как можно было бы ожидать, что они также будут совершены автоматически. Используйте 'FlushMode.Never', если вам это не нужно. – Andreas
также отмечают, что команда спящего режима (n) препятствует использованию сеанса для каждого приложения – Firo
Хорошо, я думаю, что лучше всего сделать это, чтобы изменить способ работы с сеансом и сделать его более практичным с NH. спасибо :) –