Entity Framework 4 DB-First Dependency Injection? - PullRequest
       2

Entity Framework 4 DB-First Dependency Injection?

4 голосов
/ 09 декабря 2011

Я предпочитаю создавать свою собственную БД, настраивать индексы, уникальные ограничения и т. Д. Генерация модели предметной области из базы данных - это простое дело с конструктором edmx Entity Framework.

Теперь меня интересует настройка некоторых репозиториев с использованием Dependency Injection. Я просмотрел некоторые статьи и сообщения о StackOverflow и, похоже, сосредоточился на подходе, основанном на коде. Довольно просто, как вы можете создать общий репозиторий для обработки CRUD и использовать Dependency Injection для выбора деталей реализации.

Я бы хотел сделать то же самое, но, похоже, модель домена, сгенерированная процессом edmx, наследует конкретные классы вместо реализации интерфейсов (ObjectContext / ObjectSet в отличие от IObjectContext / IObjectSet).

Есть ли у кого-нибудь какие-либо ресурсы, на которые они могут указать мне, как я мог бы использовать Dependency Injection при использовании метода db-first / генерации кода?

Ответы [ 2 ]

10 голосов
/ 09 декабря 2011

Возможно, я неправильно понимаю ваш вопрос, но тот факт, что EDMX генерирует код, который наследуется от ObjectContext, не мешает вам использовать внедрение зависимостей.Похоже, вы беспокоитесь о невозможности внедрения вашего ObjectSet в свой репозиторий, но это не совсем то, как он предназначен для использования.

С общим шаблоном репозитория, таким как найденный здесь , интерфейс IRepository - это то, что вы внедряете в свои ViewModels / Controllers / Whзнаки.

Таким образом, вы не вводите IObjectContext или IObjectSet в свой репозиторий;вместо этого вы внедряете свой IRepsoitory в ваши классы, которые в этом нуждаются, и вы предоставляете реализацию интерфейса IRepository, который использует ваш ObjectSet.Затем вы можете смоделировать свой интерфейс IRepository для тестирования или переключиться на совершенно другую конкретную реализацию репозитория, не затрагивая любой другой ваш код.

В настоящее время мы делаем то же самое с EF4 DB-first и репозиторием.шаблон, который я привел выше, и он работает довольно хорошо.

1 голос
/ 19 февраля 2013

Я сам искал ответ на этот вопрос, и я получил следующее решение: Учебник генератора DBContext для создания модели POCO после создания модели Entity с базой данных сначала.что реализация довольно проста, поскольку это очень похоже на репозиторий CodeFirst и шаблоны DI шаблоны Repository & DI (IoC)

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