无法检索元数据.在模型生成期间检测到一个或多个验证错误.Entitytype没有定义键

本文关键字:验证 一个 错误 定义 Entitytype 模型 元数据 检索 检测 | 更新日期: 2023-09-27 18:10:08

我在我的项目中使用EF代码第一方法。我有一个'Order'模型,它有一个'ApplicationUser'模型的外键'UserID',如下所示:

public class Order
{
    [Key]
    public int OrderID { get; set; }
    public virtual string UserID { get; set; }
    public decimal TotalPrice { get; set; }
    public bool OrderShipped { get; set; }
    public DateTime OrderDateTime { get; set; }
    public string Address1 { get; set; }
    public string Address2 { get; set; }
    public string Town { get; set; }
    public string Country{ get; set; }
    public string PostalCode { get; set; }
    [ForeignKey("UserID")]
    public virtual ApplicationUser User { get; set; }
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection", throwIfV1Schema: false)
    {
    }
    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
    }
}

问题是,每当我尝试添加一个新的控制器与模型类'Order.cs(MajorProject2.Models)'和数据上下文类'MajorProject2Context (MajorProject2.Models)',它给出了如下所示的错误:

运行所选代码生成器时出现错误:'无法检索'MajorProject2.Models.Order'的元数据。

在模型生成过程中检测到一个或多个验证错误:

IdentityUserLogin::EntityType 'IdentityUserLogin'没有定义密钥。

IdentityUserRole::EntityType 'IdentityUserRole'没有定义键。

IdentityUserLogins:EntityType:EntitySet 'IdentityUserLogins'是基于没有定义密钥的'IdentityUserLogin'类型。

IdentityUserRoles: EntityType: EntitySet 'IdentityUserRoles'是基于没有定义键的类型'IdentityUserRole'。

如何解决这个错误??我尝试了不同的解决方案,但没有一个是有效的。

无法检索元数据.在模型生成期间检测到一个或多个验证错误.Entitytype没有定义键

我有两个DbContext: MajorProject2Context和ApplicationDbContext。我得到了这个错误,因为我在MajorProjectContext中的一个模型中有ApplicationDbContext的外键。我发现的唯一解决方案是将两个DbContext合并为一个DbContext(ApplicationDbContext)。我不得不做一些改变,但现在一切都很好。

您只是忘记为您的类订单添加ID。您可以看到,EF用您的字段生成表。它需要名为ID的字段。把OrderID改成ID,一切都没问题了