Entity framework 先共享datacontext/注入依赖项实体框架6代码

Entity framework 先共享datacontext/注入依赖项实体框架6代码,entity-framework,dependency-injection,ef-code-first,entity-framework-6,Entity Framework,Dependency Injection,Ef Code First,Entity Framework 6,既然EF6支持存储库和UoW开箱即用,那么如何与存储库一样共享实体框架6.1.1.的数据上下文和注入依赖项(我使用Ninject)呢 我所能找到的都是至少3年前的问题和博客文章。但是,关于EF6,以及当前的情况,即存储库和UoW是开箱即用的 该解决方案包含两个项目,一个是web项目(asp.NETMVC),另一个是充当数据层的类库。数据层基于code-First 我确实创建了存储库,但没有意识到它已经得到了开箱即用的支持 我安装了ninject.mvc5,这是我注册的: private stat

既然EF6支持存储库和UoW开箱即用,那么如何与存储库一样共享
实体框架6.1.1.
的数据上下文和注入依赖项(我使用
Ninject
)呢

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

该解决方案包含两个项目,一个是web项目(
asp.NETMVC
),另一个是充当数据层的类库。数据层基于
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();
        }
私有静态无效注册服务(IKernel内核)
{
kernel.Bind().ToSelf().InRequestScope();
kernel.Bind().To().InRequestScope();
kernel.Bind().To().InRequestScope();
}

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

存储库是
DbContext
中的
DbSet
s。
DbContext
是您的UoW

以前使用UoW时,现在就使用
DbContext
。您不再传递单个存储库,而是传递整个
DbContext
(坦率地说,以前传递单个存储库是不寻常的习惯,尽管很多人都这样做)

这样就足够了

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

ApplicationDbContext
然后通过构造函数注入注入到上层类(如果适用)。

Hi,您能给我一个例子说明其中一个上层类应该是什么样子吗?我是否也需要在类库项目中安装ninject?