Согласно 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
в явной транзакции? Или допустимо для операций чтения использовать неявные транзакции?