多对多关系类设计

本文关键字:关系 | 更新日期: 2023-09-27 18:03:22

如何处理以下场景。

我有一个Product类有List<Orders>Order类有List<Products>

有上述结构是好还是会在将来产生任何问题?

多对多关系类设计

我想说在Product类中有List<Order>弊大于利。一个产品可以有成千上万的订单,这取决于你项目的规模。

在这种情况下,即使您只是想创建一个产品列表,您也必须在其中创建数千个Order实例——这是一个完全无用的数据。

相反,您可以很容易地接受包含该产品的所有订单:

List<Order> _Orders = AllOrders.Where(_Order => _Order.ProductIds.Contains(YourProductId));

您真的不需要从ProductOrder的链接,因为如果您想知道过去是否订购了特定的产品,那么您可以使用产品的ID搜索与每个订单相关的产品。从OrderProduct的链接是有意义的,因为这样您可以看到哪些产品构成了订单。

您可以通过使用元组来链接Product和Order来解除Order和Product类型的耦合。

Product中删除List<Order>,从Order中删除List<Product>,创建包含List<Tuple <Order, Product>>的第三个类