0

Как делиться данным datacontext Entity Framework 6.1.1. и вводить зависимости (я использую Ninject), как репозитории, поскольку EF6 поддерживает репозитории и UoW из коробки?Поделиться зависимостями datacontext/inject Entity Framework 6 Сначала код

Все, что я могу найти, это вопрос SO и блогпост/статьи не менее 3 лет. Но ничего о EF6 и текущей ситуации, которая является репозиториями и UoW, поддерживается из коробки.

Решение содержит 2 проекта, один - веб-проект (asp.net-mvc), другой - библиотека классов, действующая как datalayer. Базовый файл основан на Code First.

Я действительно создавал репозитории, но не понимал, что он уже поддерживается из коробки.

Я установил ninject.mvc5 и это то, что я зарегистрирован:

private static void RegisterServices(IKernel kernel) 
     { 
      kernel.Bind<ApplicationDbContext>().ToSelf().InRequestScope(); 
      kernel.Bind<IOrderRepository>().To<OrderRepository>().InRequestScope(); 
      kernel.Bind<IUserRepository>().To<UserRepository>().InRequestScope(); 
     } 

Так что я думаю, мне нужно заново фактор моего кода и удалить репозитории. Но я не знаю, что должно их заменить?

ответ

0

Хранилища - это ваши DbSet s внутри DbContext. DbContext - ваш UoW.

Всякий раз, когда UoW использовался раньше, вы используете DbContext. И вы, , больше не пропускаете отдельные репозитории, вы передаете весь DbContext (это было, откровенно говоря, необычная привычка раньше, чем передавать отдельные репозитории, хотя многие это делали).

Теперь это достаточно, то

 kernel.Bind<ApplicationDbContext>().ToSelf().InRequestScope(); 

ApplicationDbContext затем вводится с помощью инъекции конструктора к классам верхнего уровня, где это применимо.

+0

Привет, не могли бы вы показать мне пример того, как должен выглядеть один из этих высших классов? И мне нужно также установить ninject в проект библиотеки классов? – Quoter

Смежные вопросы