如何使用.net core 2.1中的Identity用户和角色更新现有数据库?

时间:2019-03-30 11:06:07

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

我正在使用代码优先模式来创建数据库。我已经有一个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()不会执行任何操作,只是返回即可。

我的问题:

  1. 有什么方法可以避免为IdentityContext创建重复的上下文,并以某种方式将其添加到我现有的数据库上下文中?

  2. 如果我确实要像上面那样使用单独的DbContext(但使用相同的现有数据库),如何确保自动创建Identity / roles表?

2 个答案:

答案 0 :(得分:0)

您可以通过在默认的DbContext中扩展AccountDbContext来避免创建两个上下文。

public class YourDbContext : AccountDbContext
{
}

答案 1 :(得分:0)

确定,找到了解决方案。我可以直接继承IdentityDbContext而不是DbContext(因为IdentityDbContext仍然扩展了DbContext)。迁移可以像往常一样添加。