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

时间:2014-12-26 17:46:54

标签: c# entity-framework ef-code-first entity-framework-6 ef-migrations

我创建了一个新的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.

问题是我的项目中没有名为IdentityUserRoleIdentityUserLogin的类。这些名称位于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。是否有其他方法可以实现与迁移一起使用的方法?

1 个答案:

答案 0 :(得分:5)

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

    base.OnModelCreating(modelBuilder);

希望这有助于其他人!