1

我正在尝试使用 nuget 的 EntityFramework.Patterns 包,但我被卡住了,这是我的

问题:如何使用 ninject 在 mvc 控制器中注入 productRepo 和 unitOfWork ?

这是教程链接: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);
4

2 回答 2

0
  • 从 nuget 下载 Ninject.MVC3 包。
  • 从 AppStart 文件夹中删除“ninject web common”部分
  • 打开您的 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);
        }
    }
}

然后,您可以在 App_Start 文件夹中创建一个新的 NinjectConfig.cs 文件,并将以下代码添加到您的类中:

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

于 2014-01-23T15:13:29.633 回答
0

添加一个构造函数,将它们作为控制器的参数。搜索构造函数注入以获取更多详细信息。

于 2012-04-16T22:33:49.673 回答