我正在使用代码优先模式来创建数据库。我已经有一个DbContext / DB设置。现在,我决定使用Identity.EntityFrameworkCore向其添加身份验证支持。 我创建了另一个DbContext以具有与身份相关的表,如下所示:
public class AccountDbContext:IdentityDbContext
{
public AccountDbContext(DbContextOptions<AccountDbContext> options) : base(options)
{
}
}
我将上述DbContext添加到了startup.cs中,如下所示:
services.AddDbContext<AccountDbContext>(o => o.UseSqlServer(Configuration.GetConnectionString("TESTDB")));
最后:
dbContext.Database.EnsureCreated();
但是由于TESTDB已经与现有的数据库上下文相关联,因此已经创建了它。因此,我猜函数调用-GuaranteeCreated()不会执行任何操作,只是返回即可。
我的问题:
有什么方法可以避免为IdentityContext创建重复的上下文,并以某种方式将其添加到我现有的数据库上下文中?
如果我确实要像上面那样使用单独的DbContext(但使用相同的现有数据库),如何确保自动创建Identity / roles表?
答案 0 :(得分:0)
您可以通过在默认的DbContext中扩展AccountDbContext来避免创建两个上下文。
public class YourDbContext : AccountDbContext
{
}
答案 1 :(得分:0)
确定,找到了解决方案。我可以直接继承IdentityDbContext而不是DbContext(因为IdentityDbContext仍然扩展了DbContext)。迁移可以像往常一样添加。