请参见示例实体:
Customer
* Id
* Name
Product
* Id
* Name
* Price
PurchaseOrder
* Id
* CustomerId
* Customer
PurchaseOrderItem
* Id
* PurchaseOrderId
* PurchaseOrder
* ProductId
* Product
* Quantity
* Price
如您所见,PurchaseOrder
引用Customer
,而PurchaseOrderItem
引用PurchaseOrder
和Product
。
我的问题是,像Customer
,Product
和PurchaseOrder
这样的引用实体是否应具有导航属性?查看修改后的实体:
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中?我想到的一件事是手动加入Product
和PurchaseOrerItem
之类的实体列表,我认为这有点乏味。
第三,即使每次导航属性看起来都没有意义,这是否也是错误的?
如果您由于不清楚的问题或其他任何原因决定关闭此问题,请至少至少首先指导我正确的方向。
答案 0 :(得分:1)
关于何时包括导航属性是否有指南?
对于多对多关系
对于带有外键的实体,始终具有单例导航属性。
通常使用集合导航属性。它们很方便,但是您通常会最终使用它们。引用类型的实体例外,可以由多个不相关的实体引用。例如位置,组织,货币等。