如果您有一个引用客户的订单,该模型是否包含客户的 ID 或客户对象的副本,如值对象(考虑 DDD)?
我想这样做:
public class Order {
public int ID {get;set;}
public Customer customer {get;set;}
...
}
现在我这样做:
public class Order {
public int ID {get;set;}
public int customerID {get;set;}
...
}
在传递给表单的视图模型中包含完整的客户对象而不是 ID 会更方便。否则,我需要弄清楚如何将供应商信息获取到订单按 ID 引用的视图。
这也意味着存储库了解如何处理它在调用 save 时在 order 对象中找到的客户对象(如果我们选择第一个选项)。如果我们选择第二个选项,我们需要知道在视图模型中放置它的位置。
可以肯定的是,他们会选择现有客户。但是,也可以肯定他们可能希望在显示表单上就地更改信息。有人可能会争辩说让控制器提取客户对象,将客户更改单独提交到存储库,然后将更改提交到订单,将客户 ID 保留在订单中。