C# 如何在两个实体都有';拥有';彼此的关系

C# 如何在两个实体都有';拥有';彼此的关系,c#,oop,C#,Oop,举个简单的例子: 客户可以在电子商务网站上下订单 现在,我可以从这句话中推断出两种成分(‘有’关系) 订单有顾客 客户有一个或多个订单 我应该如何为此创建类。在设计这两个类时,我应该记住哪些因素。以下是我迄今为止发现的可能性 带有customerId的订单类 带有Customer对象的Order类 没有订单历史记录的客户类。(因为我仍然可以从订单表中找到有关客户订单的信息) 具有OrderId列表的Customer类 带有订单对象列表的Customer类 我如何决定哪种情况最适合?第一种可能是简

举个简单的例子: 客户可以在电子商务网站上下订单

现在,我可以从这句话中推断出两种成分(‘有’关系)

  • 订单有顾客

  • 客户有一个或多个订单

  • 我应该如何为此创建类。在设计这两个类时,我应该记住哪些因素。以下是我迄今为止发现的可能性

  • 带有customerId的订单类
  • 带有Customer对象的Order类

  • 没有订单历史记录的客户类。(因为我仍然可以从订单表中找到有关客户订单的信息)

  • 具有OrderId列表的Customer类

  • 带有订单对象列表的Customer类


  • 我如何决定哪种情况最适合?

    第一种可能是简单的,似乎对您的情况足够了!订单将客户id作为外键。

    这取决于您的使用情况。你想对客户做什么?你想用订单做什么?您将如何使用这些数据?您是按客户id还是按订单id进行查询,还是同时按客户id和订单id进行查询?这是不够的,一般来说是一个广泛的问题。我想为典型的电子商务网站。他们有客户的订单历史记录,并显示在客户档案上。是的。这就是我所做的,但我想知道当系统有几十亿个订单时会发生什么。检索客户订单历史记录不会太慢吗?我无法想象有任何更好的方法,这是最理想的方法,当系统有如您所说的大量订单时,您可以参考其他技术,如索引和缓存。