首页 > 解决方案 > EF Core - 多对一映射

问题描述

我正在尝试使用 EF Core Data Annotation 在两个表之间创建映射。

所以这是我的示例场景。假设我有这些包含以下属性的类

订单

[Key] 
public int OrderId {get;set}
public string OrderNumber {get;set;}

订单状态

[Key]
public int OrderStatusId {get;set}
public string OrderNumber {get;set;}
public StatusEnum Status {get;set} // Pending, Delivered, Cancel

我有这个示例数据:

OrderId                 OrderNumber // Order Table
1                       11111
2                       11111
3                       11111
4                       22222

OrderStatusId           OrderNumber         Status
1                       11111               Pending
2                       22222               Pending

基本上,我创建OrderStatuses了存储状态的表,OrderNumber但它们没有关系,因为我不知道如何Many-to-One使用 Entity Framework Core 的数据注释而不使用key. 我想实现这一点,这样我就可以使用该.Include方法来获取所有信息。

关键是,许多订单,但只有一个状态。我希望有人帮助我。

标签: entity-frameworkentity-framework-core

解决方案


正如您在和many-to-one之间想要的那样,您似乎错误地配置了模型关系。OrderOrderStatus

所以你OrderStatusOrder 模型类应该如下:

public class OrderStatus
{
    [Key]
    public int OrderStatusId { get; set; }
    public StatusEnum Status { get; set; }

    public ICollecton<Order> Orders {get; set;}
}

public class Order
{
    [Key]
    public int OrderId { get; set; }

    public string OrderNumber { get; set; }

    public OrderStautsId {get;; set;}

    public OrderStatus OrderStatus { get; set; }
}

推荐阅读