如何在我想要的位置获取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
}