Шаблон репозитория ORM - PullRequest
       1

Шаблон репозитория ORM

3 голосов
/ 01 марта 2011

Это больше вопрос, где я ищу мнения.Я работаю над проектом, который использует как NHibernate, так и EntityFramework (это дизайн, желаемая гибкость).Итак, я пошел дальше и начал работать над шаблоном Repository, но столкнулся с небольшой дилеммой.

В общем, я хотел знать, что вы, ребята, думаете о следующих областях:

  1. Должен ли репозиторий быть одиночным?- Это позволит мне держать сессии открытыми, но в то же время я думаю, что они будут держать соединения открытыми с базой данных.Для NHibernate ORM может гарантировать только то же самое в том же сеансе.Это идеально для легкого кодирования, но есть определенные способы преодолеть это, используя ключи и переопределяя методы GetHashCode и Equals.

  2. Если это не одиночный код (или даже если он есть),я должен закрыть соединения, как только они используются?Для NHibernate это означает закрытие сеанса каждый раз, когда репозиторий «утилизируется», то есть после каждого использования.

  3. Реализовали ли вы шаблон репозитория для NHibernate или EF 4.0 и нашли любойполезные идеи?

Ответы [ 2 ]

4 голосов
/ 01 марта 2011

Не кодируйте создание синглетонов самостоятельно (т.е. сам шаблон синглтона), используйте инфраструктуру IOC, такую ​​как StructureMap, для управления объектами в жизненном цикле.

  1. Это мы можем 'т ответ.Если он одноэлементный, он должен быть поточно-ориентированным в отношении ресурсов, которыми он управляет внутри (например, пул соединений активных соединений БД).Потокобезопасный код не тривиален.

  2. Мы не можем ответить.Это зависит от того, как вы действуете с вашей моделью.Это также зависит от того, хотите ли вы, чтобы люди могли читать через DataReader, который требует активного подключения к базе данных.Это также влияет на такие вещи, как отложенная загрузка, которая требует активных сеансов, что становится кошмаром с привязкой данных.

  3. Вот все, что я придумал в отношении создания шаблона репозитория для NH: Создание общего универсального и расширяемого репозитория NHiberate версии 2

0 голосов
/ 03 марта 2011

Первый вопрос, у есть , чтобы быть NHibernate? Почему бы не взглянуть на использование EF4 с IoC, мой любимый StructureMap , тогда вам больше не нужно беспокоиться о создании одиночного репозитория, так как StructureMap предоставляет опции, позволяющие держать область открытой по запросу, с помощью HttpContext, гибридом. У вас, конечно, есть возможность использовать шаблон Singleton с вашим репозиторием. Я просто не продал его, поскольку он является жизнеспособным вариантом в таком случае.

Надеюсь, это поможет вам больше, чем смущает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...