Ninject с Fluent NHibernate в слое репозитория - PullRequest
2 голосов
/ 31 января 2011

Из-за того, что LinqToSql не подходит для отношений «Многие ко многим», я нахожусь в процессе принятия решения о переходе на NHibernate (Свободный NHibernate), если не убежден иначе ...

Структура проекта: пользовательский интерфейс (приложение Mvc2 с Ninject для подключения всех сервисов к контроллерам и репозитории к сервисам), DomainServiceLayer (все утилиты, помощники, сервисы, модель домена и т. Д.) И мой уровень репозитория для сохранения. У меня есть еще один вызов проекта Model, который в основном раскрывает сущности, на которые ссылаются все проекты.

По сути, я создаю свои отображения на уровне репозитория со ссылками на NHIbernate и Fluent NHIibernate, и я надеюсь предоставить интерфейсы службе домена для запросов и сохранения данных. Как подключить iSession, куда подключить? Любой пример кода, в какой проект я должен поместить его? В идеале я хочу сохранить это на уровне репозитория ... Стоит ли изучать NHibernate и проходить через все это?

Ответы [ 3 ]

6 голосов
/ 07 февраля 2011

Рекомендую посмотреть посты Боба в блоге.Он подробно описывает, как использовать шаблон хранилища в Ninject с помощью NHibernate.Я планировал добавить пример в ближайшем будущем к образцу приложения, которое выходит с расширением MVC, поскольку этот вопрос возникает снова и снова.

http://blog.bobcravens.com/2010/06/the-repository-pattern-with-linq-to-fluent-nhibernate-and-mysql/

http://blog.bobcravens.com/2010/07/using-nhibernate-in-asp-net-mvc/

http://blog.bobcravens.com/2010/09/the-repository-pattern-part-2/

3 голосов
/ 31 января 2011

Как правило, у меня есть NHibernateSessionFactory, представляющий собой одноэлементный объект с методом OpenSession, и я обычно связываю ISession таким образом.1005 * на вашем уровне хранилища, которое ваше приложение может загрузить при создании ядра.

2 голосов
/ 31 января 2011

Я выполняю настройку на прикладном уровне (т. Е. На верхнем уровне), так как конфигурация отличается в разных приложениях. Но может быть полезно разбить некоторые конфигурации на классы, хранящиеся на уровне хранилища.

Я открываю и закрываю сеанс с помощью HttpModule.

...