entity-framework - 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
方法来获取所有信息。
关键是,许多订单,但只有一个状态。我希望有人帮助我。
解决方案
正如您在和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; }
}
推荐阅读
- r - 将一个数据帧中的值合并到另一个数据帧而不在 R 中创建重复项
- google-apps-script - 使用 Google Apps 脚本发送 POST 请求
- git - 需要从 GIT 复制属性文件并使用 jenkins 将它们放入 NASPATH
- entity-framework - 实体框架强制内部加入 thenInclude
- swift - Swift Conforming Multiple Protocols 继承自 Same Protocol with Associated Type
- keycloak - KeyCloak 创建复合角色
- amazon-web-services - 将 ECS 与 Fargate 一起使用时找不到 s3 的访问凭证
- mysql - 在一个查询中通过一系列日期迭代计算
- javascript - 在状态变化时反应不重新渲染
- c# - 如何使单词的特定字符加粗?