Asp.net-Mvc-5
Asp.net 身份驗證錯誤
我想將 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 }); }