我有以下类图:
Customer Id Name Email
Packages Id Name ImageUrl Price Description Products (One package may have 1 to many products)
Products Id Name ImageUrl Price Description
Orders Id CustomerId Address
如何在订单,产品和包装之间建立关系。我正在使用Entity Framework 6 Code First和MVC 5 webapi。
编辑:
答案 0 :(得分:1)
Customer
- Orders
有一对多关系。在CustomerId
中需要ForeignKey Orders
。所以上面应该这样做。Orders
- Products
有很多关系。需要多个表(例如,RelatedOrderProducts
),其中包含表OrderId
和ProductId
的外键字段Orders
和Products
。Customer
和Packages
也是多对多的关系。与上面相同,应该有多个表(RelatedPackagesCustomers
),分别包含表PackageId
和CustomerId
的外键字段Packages
和Customers
。 / LI>
醇>
我不熟悉实体框架MVC,但这是您可以遵循的数据库设计。
修改强>
我可能误解了第三种关系。根据您希望如何访问数据,有一些修复可能会起作用。一种可能的编辑方式是将RelatedPackagesCustomers
表更改为RelatedOrderPackages
表,并相应地更改外键。通过这种方式,您将拥有两个关系,订单包和订单产品,这些产品将保存包含产品包和产品组合的订单。
要保存,您应该添加订单并使用OrderId
在其resp中添加产品和包关系。关系表。
当您需要获取客户订购的所有包裹和产品的清单时,您将使用Order
查询CustomerId
,并在其上执行两次JOIN
将从RelatedOrderPackages
获取包的查询以及与特定RelatedOrderProducts
相关的OrderId
的产品(与客户间接相关)。