实体框架6.1代码首次迁移错误:EntityType'IdentityUserRole'没有定义密钥

joe*_*ish 1 c# entity-framework ef-code-first ef-migrations entity-framework-6

我创建了一个新的MVC 5项目,当我在Package Manager控制台中获得以下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.
Run Code Online (Sandbox Code Playgroud)

问题是我的项目中没有调用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");
}
Run Code Online (Sandbox Code Playgroud)

我想在EF中为我的表设置Schema.有没有其他方法可以实现与迁移一起使用的方法?

joe*_*ish 5

我刚刚找到了答案!OnModelCreating在我的Db Context类中使用覆盖,我意识到我没有调用基本方法.我在覆盖结束时添加了以下行,一切都开始工作了!

    base.OnModelCreating(modelBuilder);
Run Code Online (Sandbox Code Playgroud)

希望这有助于其他人!