2012-04-15 2 views
1

Я пытаюсь использовать пакет EntityFramework.Patterns из NuGet, но я застрял, вот мойКак использовать EntityFramework.patterns с ninject в MVC 3?

вопрос: как использовать Ninject вводить productRepo и UnitOfWork в MVC контроллер?

здесь ссылка учебник: http://efpatterns.codeplex.com/wikipage?title=Pattern%20%3a%20Use%20Repository%20and%20UOF

DbContextAdapter adapter = new DbContextAdapter(ctx); 
IRepository<Product> productRepo = new Repository<Product>(adp); 
IUnitOfWork unitOfWork = new UnitOfWork(adp); 

ответ

0

Добавить конструктор, принимающий их в качестве аргументов контроллера. Найдите инъекцию конструктора для получения более подробной информации.

+0

ОК, я разработал его – dfang

0
  • Скачать Ninject.MVC3 package from nuget.
  • Удалить «Ninject веб-общий» часть из папки AppStart
  • Откройте global.asax и изменить свой код, чтобы выглядеть на следующий

namespace OnBoardingMVC 
{ 
    public class MvcApplication : Ninject.Web.Common.NinjectHttpApplication 
    { 
     protected override IKernel CreateKernel() 
     { 
      var kernel = new StandardKernel(); 
      NinjectConfig.RegisterServices(kernel); 
      return kernel; 
     }  
     protected override void OnApplicationStarted() 
     { 
      base.OnApplicationStarted(); 
      AreaRegistration.RegisterAllAreas(); 
      WebApiConfig.Register(GlobalConfiguration.Configuration); 
      FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
      RouteConfig.RegisterRoutes(RouteTable.Routes); 
      BundleConfig.RegisterBundles(BundleTable.Bundles); 
     } 
    } 
} 

Тогда вы можете создать новый файл NinjectConfig.cs в папке App_Start и добавьте следующий код в свой класс:

namespace OnBoardingMVC 
{ 
    public class NinjectConfig 
    { 
     public static void RegisterServices(IKernel kernel) 
     { 
      // e.g. kernel.Load(Assembly.GetExecutingAssembly()); 
      kernel.Bind(typeof(IEmployeeUow)) 
        .To(typeof(EmployeeUow)) 
        .WithConstructorArgument("adapter", <Add new AdapterVariable here>) 
      ; 
     } 
    } 
} 

Затем вы можете создать класс EmployeeUow, который наследуется от класса UnitOfWork, а также создать IEmployeeUow, который наследуется от IUnitOfWork, и адаптер контекста будет параметром для конструктора, и этот конструктор также передаст адаптер базовому конструктору UnitOfWork класс.

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