我创建了一个新的MVC 5项目,当我在软件包管理器控制台中收到以下PS异常时,我尝试为我创建的Code First实体启用迁移:
One or more validation errors were detected during model generation:
Project.Web.Models.IdentityUserRole: : EntityType 'IdentityUserRole' has no key defined. Define the key for this EntityType.
Project.Web.Models.IdentityUserLogin: : EntityType 'IdentityUserLogin' has no key defined. Define the key for this EntityType.
IdentityUserRoles: EntityType: EntitySet 'IdentityUserRoles' is based on type 'IdentityUserRole' that has no keys defined.
IdentityUserLogins: EntityType: EntitySet 'IdentityUserLogins' is based on type 'IdentityUserLogin' that has no keys defined.
问题是我的项目中没有名为IdentityUserRole
或IdentityUserLogin
的类。这些名称位于Microsoft.AspNet.Identity.EntityFramework
命名空间中的类,但错误是说这些类存在于我的项目命名空间中。
如何解决此问题?我已经多次清理并重新编译了该项目,似乎没有什么能解决这个问题。
如果我删除OnModelCreating
覆盖,一切正常......这就是我在覆盖中的含义:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<CommercialEntity>().ToTable("Commercial", "Entity");
modelBuilder.Entity<ResidentialEntity>().ToTable("Residential", "Entity");
modelBuilder.Entity<ContactsList>().ToTable("ContactsList", "List");
modelBuilder.Entity<ListFacet>().ToTable("ListFacet", "List");
}
我想在EF中为我的表设置Schema。是否有其他方法可以实现与迁移一起使用的方法?
答案 0 :(得分:5)
我刚刚找到了答案!在我的Db Context类中使用OnModelCreating
覆盖,我意识到我没有调用基本方法。我在覆盖结束时添加了以下行,一切都开始工作了!
base.OnModelCreating(modelBuilder);
希望这有助于其他人!