Шаблон NHibernate и репозиторий

Какой рекомендуемый подход использовать с шаблоном Nhibernate + Repository?

Существует так много разных статей и мнений, что я не уверен, какой путь выбрать. Возьмем, к примеру, эту длинную статью . Он дает пример объектов Query, но каждый конкретный репозиторий принимает ISession в своем конструкторе. Что мне нужно знать о сеансах NH в моем BL (бизнес-уровне)?

  1. Создать группу репозиториев, каждый из которых имеет набор определенных методов?
    По-видимому, это слишком много работы, потому что BL теперь «разрешен» чтобы знать о NHibernate ( Репозиторий - это новый Синглтон )?

  2. Создайте единый общий репозиторий, но откройте IQueriable и используйте LINQ в BL
    Каждый раз а затем есть запрос, который LINQ-to-NHibernate не сможет обработать (или мне нужно настроить SQL вручную один раз из сотни запросов). Это просто с пользовательскими методами репо, но почти невозможно с кодом, основанным на LINQ. И использование обоих только потому, что LINQ в некоторых случаях не работает, - это ерунда.

  3. Объекты запроса?
    QueryOver также зависит от NH, что означает, что BL снова знает о реализации DAL.

  4. Еще один подход. ?

Очевидно, мне нужно иметь возможность управлять транзакциями где-то , возможно, используя шаблон «Единица работы» (хотя существует также множество различных реализаций этого).

22
задан doe 22 July 2011 в 12:13
поделиться