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;
    }

person Builder Bob    schedule 11.05.2012    source источник
comment
Неявные транзакции создаются, если вы не создаете их с помощью кода, как можно было бы ожидать, они также автоматически фиксируются. Используйте FlushMode.Never, если вам не нужно такое поведение.   -  person Andreas    schedule 13.05.2012
comment
также обратите внимание, что команда (n) hibernate не рекомендует использовать сеанс для каждого приложения   -  person Firo    schedule 14.05.2012
comment
Хорошо, я думаю, что лучше всего здесь изменить способ работы с сеансом и сделать его более практичным с NH. Благодарность :)   -  person Builder Bob    schedule 17.05.2012


Ответы (1)


Кажется, у меня был другой поток, который сбрасывал тот же сеанс, когда я создавал грязный объект в моем пользовательском интерфейсе, я думаю, это была просто ошибка в моем приложении.

Сейчас отлично работает, все еще использую сеанс для каждого приложения, так как мне нужна функция Lazy.

person Builder Bob    schedule 23.05.2012
comment
Поздравляю с тем, что вы разобрались с этим! Когда у вас будет такая возможность, обязательно отметьте свой ответ как «принятый» (с помощью зеленой галочки), чтобы другие участники сообщества могли извлечь уроки из вашего успеха. Ура ~ - person Andrew Kozak; 23.05.2012