共享datacontext / inject依赖项实体框架6代码优先

时间:2014-12-14 19:13:32

标签: entity-framework dependency-injection ef-code-first entity-framework-6

如何共享Entity Framework 6.1.1.的datacontext并注入依赖关系(我使用Ninject),就像存储库一样,因为EF6支持存储库和开箱即用的UoW?

所有我能找到的是至少3年的问题和博文/文章。但是没有关于EF6的信息,以及当前的情况,即存储库和UoW是开箱即用的。

该解决方案包含2个项目,一个是Web项目(asp.net-mvc),另一个是充当数据层的类库。数据层基于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();
        }

所以我想我需要重新考虑我的代码并删除存储库。但我不知道应该取代它们的是什么?

1 个答案:

答案 0 :(得分:0)

存储库是DbSet内的DbContextDbContext是你的UoW。

无论何时使用UoW,您现在都使用DbContext。并且你不再通过单独的存储库,你传递整个DbContext (坦白说,这是一种不寻常的习惯,然后通过个别存储库,尽管很多人都这样做了。)

现在已经足够了

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

然后通过构造函数注入将ApplicationDbContext注入适用的上层类。