无法检索元数据.在模型生成期间检测到一个或多个验证错误.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'。
如何解决这个错误??我尝试了不同的解决方案,但没有一个是有效的。
我有两个DbContext: MajorProject2Context和ApplicationDbContext。我得到了这个错误,因为我在MajorProjectContext中的一个模型中有ApplicationDbContext的外键。我发现的唯一解决方案是将两个DbContext合并为一个DbContext(ApplicationDbContext)。我不得不做一些改变,但现在一切都很好。
您只是忘记为您的类订单添加ID。您可以看到,EF用您的字段生成表。它需要名为ID的字段。把OrderID
改成ID
,一切都没问题了