首页 文章

如何将DbContext与IdentityDbContext合并

提问于
浏览
1

我试图摆脱代码优先迁移 .

问题是AspNetUsers正在扩展IdentityUser . 因此,当我尝试使用DbContext时,我得到以下错误 .

  • EntityType 'IdentityUserLogin'没有定义键 . 定义此EntityType的键 .

  • EntityType 'IdentityUserRole'没有定义键 . 定义此EntityType的键 .

我想将AspNetUsers用于两个目的:

  • 身份管理 .

  • 从数据库中查询用户 .

是否可以在不使用IdentityDbContext的情况下使用此路线?

public class MyEntities : DbContext
{
     public DbSet<AspNetUsers> AspNetUsers { get; set; }
}

3 回答

  • 1

    你不需要添加

    public DbSet<AspNetUsers> AspNetUsers { get; set; }
    

    从IdentityDbContext继承您的上下文,只有一个上下文

    public class MyEntities : IdentityDbContext<AspNetUsers>
    

    也不要忘记设置UserManager以使用AspNetUsers的MyEntities上下文

  • 2

    身份上下文继承自DBContext . 因此,只要您自己的db上下文继承自身份上下文,它就足够了 . 如下: -

    public class MyDbContext : IdentityContext {}
    
  • 1

    您可以避免使用IdentityDbContext,但需要在DbContext类中的OnModelCreating方法中自行设置映射 .

    但是,如果您正在使用SignInManager等 . 我建议您使用IdentityDbContext . 您不限制使用代码优先迁移 .

相关问题