如何共享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();
}
所以我想我需要重新考虑我的代码并删除存储库。但我不知道应该取代它们的是什么?
答案 0 :(得分:0)
存储库是DbSet
内的DbContext
。 DbContext
是你的UoW。
无论何时使用UoW,您现在都使用DbContext
。并且你不再通过单独的存储库,你传递整个DbContext
(坦白说,这是一种不寻常的习惯,然后通过个别存储库,尽管很多人都这样做了。)
现在已经足够了
kernel.Bind<ApplicationDbContext>().ToSelf().InRequestScope();
然后通过构造函数注入将ApplicationDbContext
注入适用的上层类。