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



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

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

这在文档中描述了:

摘录:

ef核心支持使用DBContext和依赖项注入容器。您的DBContext类型可以通过使用AddDbContext方法添加到服务容器中。

addDbContext将同时使您的DBContext类型,TContext和相应的DBContextOptions可从服务容器注入。

应用程序代码(在ASP.NET核心中(:

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>>();
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
}

最新更新