实体框架 6.1 代码第一个迁移错误:实体类型“标识用户角色”未定义键

本文关键字:实体 标识 用户 角色 未定义 类型 框架 代码 迁移 第一个 错误 | 更新日期: 2023-09-27 18:35:18

我创建了一个新的 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 中为我的表设置架构。 有没有另一种适用于迁移的方法来实现这一点?

实体框架 6.1 代码第一个迁移错误:实体类型“标识用户角色”未定义键

我刚刚找到了答案! 在我的 Db 上下文类中尝试OnModelCreating重写时,我意识到我没有调用基方法。 我在覆盖的末尾添加了以下行,一切开始工作!

    base.OnModelCreating(modelBuilder);

希望这对其他人有所帮助!