Как мне сохранить IQueryable <> внутри транзакции с использованием шаблона репозитория?

Согласно NHProf, использование неявных транзакций не рекомендуется:

http://nhprof.com/Learn/Alerts/DoNotUseImplicitTransactions

Однако NHibernate LINQ возвращает IQueryable при чтении объектов из базы данных, и это вычисляется лениво. У меня в репозитории есть такой метод:

public IQueryable GetAll()
{
    using (var transaction = _session.BeginTransaction())
    {
        var data = _session.Linq();
        transaction.Commit();
        return data;
    }
}

Проблема здесь в том, что метод зафиксирует транзакцию до оценки данных . Есть ли способ использовать шаблон репозитория и сохранить IQueryable в явной транзакции? Или допустимо для операций чтения использовать неявные транзакции?

7
задан Daniel T. 15 September 2010 в 19:42
поделиться