Dbcontext代码
public class BlexzWebDb : DbContext
{
public BlexzWebDb(DbContextOptions<BlexzWebDb> options)
: base(options)
{ }
public DbSet<User> Users { get; set; }
public DbSet<Role> Roles { get; set; }
public DbSet<AssignedRole> AssignedRoles { get; set; }
}
在EF Core中,通常将一些DbContextOptions
传递给构造函数。一般来说,构造函数是这样的:
public BlexzWebDb(DbContextOptions<BlexzWebDb> options) : base(options)
如你所见,没有有效的重载形式的无参数构造函数:
下面这样是不行的:
using (var db = new BlexzWebDb())
在Startup.cs中ConfigureServices()方法配置
ConfigureServices()
方法中实现注册DbContext
,具体代码如下:
public void ConfigureServices(IServiceCollection services)
{
//some mvc
services.AddMvc();
//hey, options!
services.AddDbContext<BlexzWebDb>(options =>
options.UseSqlServer(Configuration.GetConnectionString("BlexzWebConnection")));
//...省略不相关的代码
}
在Controller中获取DbContext对象的代码
public class SomeController : Controller
{
private readonly BlexzWebDb _db;
//the framework handles this
public SomeController(BlexzWebDb db)
{
_db = db;
}
}