Как объединить EntityFramework, Repository, UnitOfWork и Automapper в одном приложении MVC? - PullRequest
4 голосов
/ 12 июля 2011

Сначала я решил создать один интерфейс под названием IDataAccessLayer и начал вкладывать в него все: методы типа GetUsers(), GetUser(int id), GetOrderByNumber(int number), DeleteOrder(int Id) и т. Д.

Это сработало простоидеально сначала.Но потом я понял, что конкретная реализация DataLayer:IDataLayer становится большой.Я решил разрезать его на несколько частичных файлов классов.Тем не менее я чувствовал, что я делаю что-то действительно неправильное.

Затем я решил создать интерфейсы для каждой логической части, например IUsers, IOrders, IItems и т. Д. Не сработало, потому что яосуществлял доступ к хранилищу через одно зависимое свойство, введенное в конструктор контроллера.Поэтому я не мог просто добавить другое свойство каждый раз, когда мне нужно использовать другой тип dataContext в моем контроллере.

Затем, после долгих часов чтения статей о Entity Framework, я наконец понял, что должен использовать шаблоны Repository и Unit of work .И все же мне нужно как-то отделить POCO от моих объектов ViewModel, хотя почти все время они будут иметь общие черты.Automapper очень помогает.Но сейчас я не уверен, как использовать все вместе.Платформа Entity Framework, Patterns, Automapper и Dependency инъекция, такая как Ninject.

У меня нет четкого понимания, как объединить все это в одну удивительную архитектуру.Не могли бы вы показать мне несколько хороших примеров.

Ответы [ 3 ]

3 голосов
/ 15 июня 2012

Вы можете взглянуть на этот пример (MVCArch) Я написал несколько месяцев назад.Он использует следующие преимущества:

  • Entity Framework
  • Шаблоны репозитория и единиц работы
  • Automapper
  • Ninject
  • и т. Д...

Надеюсь, это поможет.

2 голосов
/ 12 июля 2011

Сначала приведем общую статью об n-уровневой архитектуре, использующей принципы Repository и UnitOfWork: link .У меня есть некоторый опыт работы с EF и вышеупомянутыми шаблонами, и я нашел эту статью очень полезной.

Посмотрите здесь , а также здесь для MSDNстатьи об этих принципах.

С уважением.

2 голосов
/ 12 июля 2011

Вы проходили эти уроки .

...