如何将DbContext与IdentityDbContext

时间:2018-01-29 06:22:01

标签: c# asp.net asp.net-mvc entity-framework asp.net-identity

我正试图摆脱代码优先迁移。

问题在于AspNetUsers正在扩展IdentityUser。因此,当我尝试使用DbContext时,我会收到以下错误。

  • EntityType' IdentityUserLogin'没有定义键。定义密钥 这个EntityType。
  • EntityType' IdentityUserRole'没有定义键。定义此EntityType的密钥。

我想将AspNetUsers用于两个目的:

  1. 身份管理。
  2. 从数据库中查询用户。
  3. 是否可以在不使用IdentityDbContext的情况下使用此路线?

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

3 个答案:

答案 0 :(得分:2)

您无需添加

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

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

public class MyEntities : IdentityDbContext<AspNetUsers>

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

答案 1 :(得分:1)

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

public class MyDbContext : IdentityContext {}

答案 2 :(得分:1)

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

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