Я только начал изучать NHibernate.
За последние несколько месяцев я использовал IoC / DI (структурную карту) и шаблон репозитория, и это сделало мои приложения гораздо более свободными и проще для тестирования.
Когда я переключил свой слой персистентности на NHibernate, я решил придерживаться своих репозиториев. В настоящее время я создаю новый сеанс для каждого вызова метода, но, конечно, это означает, что я не могу извлечь выгоду из отложенной загрузки.
Поэтому я хочу реализовать сеанс по запросу, но при этом мой веб-проект будет зависеть от NHibernate (возможно, это не так уж плохо?). Я планировал внедрить ISession в свои репозитории и создавать и размещать сеансы по событиям beginrequest / endrequest (см. http://ayende.com/Blog/archive/2009/08/05/do-you-need-a-framework.aspx)
Это хороший подход? Предположительно я не могу использовать сеанс на запрос без ссылки на NHibernate в моем веб-проекте?
Зависимость веб-проекта от NHibernate вызывает у меня следующие (несколько) вопросы - зачем вообще беспокоиться о репозитории? Поскольку мое веб-приложение вызывает сервисы, которые общаются с репозиториями, почему бы не отключить репозитории и просто добавить мой код персистентности NHibernate внутри сервисов? И, наконец, есть ли необходимость делиться на множество проектов. Достаточно ли веб-проекта и инфраструктурного проекта?
Я понимаю, что немного отклонился от своего первоначального вопроса, но, похоже, у каждого свое мнение по этим темам. Некоторые люди используют шаблон репозитория с NHibernate, некоторые нет. Некоторые люди прикрепляют свои файлы сопоставления к связанным классам, другие для этого имеют отдельный проект
Большое спасибо,
Бен