我想将IdentityContext与mydbcontext集成,但是我遇到了这个错误

在模型生成期间检测到一个或多个验证错误:

Ivdb.Dal.Concrete.EFCodeFirst.IdentityUserLogin::EntityType'IdentityUserLogin'没有定义键。定义此EntityType的键。
Ivdb.Dal.Concrete.EFCodeFirst.IdentityUserRole::EntityType'IdentityUserRole'没有定义键。定义此EntityType的键。
IdentityUserLogins:EntityType:EntitySet'IdentityUserLogins'基于未定义键的'IdentityUserLogin'类型。
IdentityUserRoles:EntityType:EntitySet'IdentityUserRoles'基于未定义键的'IdentityUserRole'类型。

我该如何解决?

码:

 public partial class ivdbDb156978Context : IdentityDbContext<ApplicationUser>
{
    static ivdbDb156978Context()
    {
        Database.SetInitializer<ivdbDb156978Context>(null);
    }

    public ivdbDb156978Context()
        : base("Name=ivdbContext")
    {
    }


    public DbSet<Car> Cars { get; set; }

应用用户
    public class ApplicationUser : IdentityUser
{

}

最佳答案

您的代码没有显示此内容,但是从您得到的错误中,我假定您要覆盖OnModelCreating。这是IdentityDbContext<ApplicationUser>配置 Entity Framework 映射的地方。这意味着,如果要覆盖OnModelCreating,则需要调用基数,或者必须自己进行映射。

所以这:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    // your stuff here
}

或者您执行映射:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<IdentityUserLogin>().HasKey<string>(l => l.UserId);
    modelBuilder.Entity<IdentityRole>().HasKey<string>(r => r.Id);
    modelBuilder.Entity<IdentityUserRole>().HasKey(r => new { r.RoleId, r.UserId });
}

10-06 02:43