Asp.net core mvc MVC6从与控制器无关的类访问DbContext

Asp.net core mvc MVC6从与控制器无关的类访问DbContext,asp.net-core-mvc,entity-framework-core,Asp.net Core Mvc,Entity Framework Core,我正在使用EF7开发一个ASP.Net5 MVC6网站 我想从我的一个类访问DbContext,而该类不是从控制器调用的 可以从那里进入吗?如果是的话,请给我一点指导,这样我就可以学会如何做 到目前为止,从GitHub和stackoverflow搜索了很多。关于这个话题的信息很少 如果我需要向我的班级注入,那么我应该怎么做 public class CarAppContext : DbContext { public DbSet<Car> Cars { get; se

我正在使用EF7开发一个ASP.Net5 MVC6网站

我想从我的一个类访问DbContext,而该类不是从控制器调用的

可以从那里进入吗?如果是的话,请给我一点指导,这样我就可以学会如何做

到目前为止,从GitHub和stackoverflow搜索了很多。关于这个话题的信息很少

如果我需要向我的班级注入,那么我应该怎么做

    public class CarAppContext : DbContext
{
    public DbSet<Car> Cars { get; set; }
    public DbSet<BodyType> BodyTypes { get; set; }
}

public Class NotificationManager
{
    CarAppContext ctx;
    public NotificationManager(CarAppContext AppCtx)
    {
        ctx = AppCtx;
    }
    public void SendNotification(Car HisCar, UserNotification HisNotification)
    {
        //need to check he has subscribed or not
        //ctx is null here
    }
}
公共类CarAppContext:DbContext
{
公共数据库集车辆{get;set;}
公共DbSet BodyTypes{get;set;}
}
公共类通知管理器
{
CarappCTX;
公共通知管理器(CarAppContext AppCtx)
{
ctx=AppCtx;
}
公共无效发送通知(Car HisCar、UserNotification HisNotification)
{
//需要检查他是否已订阅
//ctx在这里为空
}
}

您可以调用
new CarAppContext()

但是,如果您想使用依赖项注入,则需要确保

  • 您已经在依赖项注入容器中注册了CarAppContext和NotificationManager(通常在Startup.Configure中完成)
  • 从依赖项注入实例化NotificationManager
  • 你没有找到文档并不奇怪。由于ASP.NET5仍处于测试阶段,我们的文档尚未编写。当它准备好后,这里会发布更多信息:

    依赖项注入是一个“病毒”概念,您必须在应用程序中全面使用它-通过参数/属性传递依赖项,并具有单个(或少数)注册根。因此答案是-将NotificationManager注册为依赖项


    即使是Microsoft的依赖注入实现也已经足够抽象,因此您可以轻松地为每个组件注册依赖项(如Ninject模块)的类。

    注意:请确保将其添加到您的文件中

    using Microsoft.Data.Entity;
    

    不确定你在这里想要达到什么。上下文与控制器无关。控制器通常利用上下文来执行某种工作,但这并不意味着控制器中必须有上下文,或者不能在控制器之外创建上下文实例。