我正在使用MVC5,默认模板和身份2.0用户系统与EF6。
我将OnModelCreating
添加到我的ApplicationDbContext : IdentityDbContext<ApplicationUser>
类,以便使用流体API在两个类之间创建多对多的关系。
当我运行update-database
时,这导致了这些错误,即使我没有对这些表格进行任何操作:
EntityType'IdentityUserLogin'没有定义键。定义此EntityType的键。 EntityType'IdentityUserRole'没有定义键。定义此EntityType的键。 IdentityUserLogins:EntityType:EntitySet'IdentityUserLogins'基于没有定义键的类型'IdentityUserLogin'。 IdentityUserRoles:EntityType:EntitySet'IdentityUserRoles'基于类型'IdentityUserRole',没有定义键。
在互联网上搜索我发现另一个stackoverflow问题,将其添加到我的OnModel创建中:
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 });
这解决了这些错误,但现在我有这个错误:
无法找到对象“dbo.AspNetUserClaims”,因为它不存在或您没有权限。
如何修复此最后一个错误,为什么我在介绍OnModelCreating()后会解决所有这些错误?
答案 0 :(得分:2)
调用基类OnModelCreating,在我被覆盖的一端,修复了问题:
base.OnModelCreating(modelBuilder);
在评论中感谢@Augusto Barreto。