我正在尝试使用EF核心数据注释在2个表之间创建映射。
所以这是我的示例场景。假设我有包含以下属性的这些类
订单
[Key]
public int OrderId {get;set}
public string OrderNumber {get;set;}
OrderStatuses
[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
制成而不使用key
。我想实现这一目标,因此可以在获取所有信息时使用.Include
方法。
关键是,“只有多个订单但只有一个状态”。我希望有人能帮助我。
答案 0 :(得分:1)
由于您希望在many-to-one
和Order
之间使用OrderStatus
,因此您似乎错误地配置了模型关系。
因此,您的OrderStatus
和Order
模型类应如下所示:
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; }
}