Asp.net-Mvc-5

Asp.net 身份驗證錯誤

  • November 15, 2013

我想將 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>配置實體框架映射的位置。這意味著如果您想覆蓋 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 });
}

引用自:https://stackoverflow.com/questions/19994590