Подтвердить что ты не робот

Лучшие практики NHibernate

Я читал о Nhibernate некоторое время и пытался использовать его для сайта, который я реализую. Я читал статью Билли МакКафферти о лучших практиках NHibernate, но я не видел никаких указаний о том, где лучше всего обрабатывать транзакции.

Я думал о том, чтобы поместить этот код в объект доступа к данным (DAO), но тогда я не уверен, как обрабатывать случаи, в которых используется более одного DAO. Каковы наилучшие места для ввода кода транзакции в вашем приложении NHibernate?

4b9b3361

Ответ 1

Это действительно зависит от вашей среды. Например, мы используем Open-Session-In-View (ссылка Java, но шаблон такой же в. Net) на ASP.Net и использовать HttpModule для управления сеансами и транзакциями. HttpModule открывает сеанс и запускает транзакцию в событии BeginRequest, а затем совершает транзакцию и закрывает сеанс в событии EndRequest.

Различные среды и шаблоны связи приведут к различным стратегиям управления сеансом/транзакциями.

Существует много дискуссий о различных стратегиях в группе пользователей NHibernate, а также в Интернете в целом.

Ответ 3

Самый простой способ - использовать Smart Transaction, описанную в

http://rajputyh.blogspot.com/2011/02/nested-transaction-handling-with.html

Он использует популярный NHibernateSessionManager, и простой класс написан для обеспечения того, чтобы "вы открывали транзакцию, когда хотите", не беспокоясь о том, какая родительская логика и подзаголовка обрабатывает транзакцию.