在.Net Core中映射多对一关系

时间:2019-04-21 02:26:49

标签: c# entity-framework-core

使用.Net Core EF如何映射多对一关系?

我正在尝试映射多对一关系。我看到的所有示例都假设您映射了一对一关系(即,与会者具有票证的FK,而票证具有与会者的FK),或者它们假定从属对象将持有主要对象的集合。宾语。我看到的示例是一个Order和一个OrderStatus

Order的FK为OrderStatus。但是要在.Net中映射关系,他们需要使用OrderStatusList<Order>和指向订单的[ForeignKey]注释。

这似乎很愚蠢。我想让OrderStatus知道所有具有该状态的Orders吗?

示例:

class Order {
    long orderId;
    OrderStatus status;
    ...
}

class OrderStatus {
   long orderStatusId;
   String code;
   String description;
   int severityLevel;
   ...
}

在数据库中,“订单”表将具有一个FK列,其中包含orderStatusId。

如何对此进行简单的多对一映射?

1 个答案:

答案 0 :(得分:1)

  

我想让OrderStatus知道所有具有该状态的订单吗?

是的!可能!。编写模型类,如下所示:

public class OrderStatus 
{
   [Key]
   public long orderStatusId { get; set; }
   public string string code { get; set; }
   public string description { get; set; }
   public int severityLevel { get; set; }
   ...........

}

public class Order 
{
    [Key]
    public long orderId { get; set; }

    [ForeignKey("OrderStatus")]
    public long orderStatusId { get; set; }
    ..........

    public OrderStatus OrderStatus { get; set; }
}

然后在查询中:

var orders =  _dbContext.Orders.Where(o => o.orderStatusId == 1).ToList(); // <-- Here is all the Orders with statusId '1'