如何在我想要的ASP.NET Core 2.0中获取DbContext实例?

时间:2019-05-13 16:24:52

标签: c# entity-framework asp.net-core dependency-injection

如何在我想要的ASP.NET Core 2.0中获取DbContext实例? 为了连接数据库,我使用了服务

string connection = Configuration.GetConnectionString("DefaultConnection");
services.AddDbContext<MobileContext>(options => options.UseSqlServer(connection));

2 个答案:

答案 0 :(得分:1)

这在documentation中有描述:

节选:

  

EF Core支持将DbContext与依赖项注入容器一起使用。您可以使用AddDbContext方法将DbContext类型添加到服务容器中。

     

AddDbContext将使您的DbContext类型TContext和相应的DbContextOptions都可用于从服务容器中注入。

     

应用程序代码(在ASP.NET Core中):

public class MyController
{
  private readonly BloggingContext _context;

  public MyController(BloggingContext context)
  {
    _context = context;
  }

  ...
}
  

应用代码(直接使用ServiceProvider,不太常见):

using (var context = serviceProvider.GetService<BloggingContext>())
{
  // do stuff
}

var options = serviceProvider.GetService<DbContextOptions<BloggingContext>>();

答案 1 :(得分:0)

public class BloggingContext : DbContext
{
    public BloggingContext(DbContextOptions<BloggingContext> options)
        : base(options)
    { }

    public DbSet<Blog> Blogs { get; set; }
}

您的应用程序现在可以在实例化上下文时传递DbContextOptions,如下所示:

var optionsBuilder = new DbContextOptionsBuilder<BloggingContext>();
optionsBuilder.UseSqlite("Data Source=blog.db");

using (var context = new BloggingContext(optionsBuilder.Options))
{
  // do stuff
}