Я использую шаблон репозитория в nhibernate.
В приложении asp.net MVC.
У меня есть httpmodule, который:
beginRequest it calls session.beginTransaction();
EndRequest it calls session.Transaction.Commit();
Это нормально для 95% времени.
У меня есть случай, когда мне нужно сделать следующее в одном запросе:
List<User> users = factory.getUsers();
// update users
// commit transaction
// load users from the db again
Должен ли я просто позвонить:
factory.Session.Transaction.Commit();
factory.Session.BeginTransaction();
Я знаю, что это одна из причин, почему против использования шаблона репозитория и начала / конца сеанса в HttpModule, но в любом случае именно так я и делаю:)
Какие у меня варианты?
Uptate
Так что в основном у меня теперь будет:
Запрос страницы будет выглядеть так:
BeginRequest: Session.BeginTransaction();
userlist.aspx:
// code to fetch users from the db
// update users
Session.Transaction.Commit();
Session.BeginTransaction();
// code to fetch recently commited users form db
EndRequest: Session.Transaction.Commit();
Вышеупомянутое кажется правильным?
Полагаю, мне следует сначала проверить, существует ли текущая транзакция, прежде чем вызывать commit, и начать снова?