Как реализовать шаблон репозитория с помощью LinqToEntities?

StackOverflow https://stackoverflow.com/questions/54199

  •  09-06-2019
  •  | 
  •  

Вопрос

Как реализовать шаблон репозитория с Linqtoentities Как реализовать интерфейс

Это было полезно?

Решение

Я делаю следующее:

Уровень обслуживания содержит мои бизнес-объекты.Он передается в репозиторий посредством инверсии управления (мой обычный выбор — Замок Виндор).Репозиторий отвечает за сопоставление между бизнес-объектами и объектами моей структуры сущности.

Преимущества:У вас нет проблем с состоянием объекта или контекстом объектов EF, поскольку вы просто загружаете их во время манипулирования данными на стороне репозитория.Это облегчает ситуацию при передаче их в WCF/Web-Services.

Недостатки:Вы теряете некоторые функции отслеживания Entity Framework, вам придется вручную загружать объект данных (объекты ef), возможно, если это необходимо, вручную для оптимистичных проверок параллелизма (например, через метку времени на бизнес-объекте).

Но в целом я предпочитаю это решение, потому что позже можно изменить репозиторий.Это позволяет мне иметь разные репозитории (например, мой пользовательский объект на самом деле использует ASPNetAuthenticationRepository вместо EntityFrameworkRepository), но для моего уровня обслуживания он прозрачен.

Что касается интерфейса, я бы использовал бизнес-объекты уровня обслуживания в качестве объектов параметров и не позволял бы этим объектам EF выходить за пределы уровня репозитория.надеюсь, это поможет

Другие советы

Мне это почти нравится, за исключением «Замка Виндор».Загляните на сайт openticket.codeplex.com.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top