【问题标题】:Navigation Properties of Entities in EF CoreEF Core 中实体的导航属性
【发布时间】:2018-10-04 21:00:43
【问题描述】:

查看示例实体:

Customer
    * Id
    * Name

Product
    * Id
    * Name
    * Price

PurchaseOrder
    * Id
    * CustomerId
    * Customer

PurchaseOrderItem
    * Id
    * PurchaseOrderId
    * PurchaseOrder
    * ProductId
    * Product
    * Quantity
    * Price

如您所见,PurchaseOrder 引用 CustomerPurchaseOrderItem 引用 PurchaseOrderProduct

我的问题是,CustomerProductPurchaseOrder 等引用的实体是否应该具有导航属性?查看修改后的实体:

Customer
    * Id
    * Name
    * PurchaseOrders (list) <----- added

Product
    * Id
    * Name
    * Price
    * PurchaseOrderItems (list) <----- added

PurchaseOrder
    * Id
    * CustomerId
    * Customer
    * PurchaseOrderItems (list) <----- added

对于PurchaseOrder,我确信应该包含导航属性PurchaseOrderItems,因为我认为它们是PurchaseOrder 的“部分”,但是是否有关于何时包含导航属性的指南? Product 拥有 PurchaseOrderItems 属性目前没有意义。

我的第二个问题是,如果我不包含导航属性,我可能会面临什么影响,特别是在 EF Core 中?我能想到的一件事是手动加入ProductPurchaseOrerItem 等实体列表,这在我看来有点乏味。

第三,每次都包含导航属性,即使它们看起来毫无意义是不是错了?

如果您因为不清楚的问题或任何其他原因决定关闭此问题,请至少先引导我找到正确的方向。

【问题讨论】:

    标签: entity-framework entity-framework-core


    【解决方案1】:

    是否有关于何时包含导航属性的指南?

    对于一对多关系

    在具有外键的实体上始终具有单例导航属性。

    通常使用集合导航属性。它们很方便,但您通常最终会使用它们。例外情况是引用类型的实体可以被多个不相关的实体引用。例如位置、组织、货币等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-22
      • 2018-10-22
      • 2018-10-10
      • 2020-02-23
      • 1970-01-01
      • 2022-09-23
      • 2018-04-03
      相关资源
      最近更新 更多