0

如果您有一个引用客户的订单,该模型是否包含客户的 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 保留在订单中。

4

1 回答 1

3

如果您有以下型号:

public class Order {
    public int ID {get;set;}
    public Customer Customer {get;set;}
    public object OrderProperty {get;set;}
    ...
}

以及以下视图(来自ViewPage<Order>

你可以在你看来

Html.TextBoxFor(m=>m.OrderProperty);

但是也

Html.HiddenFor(m=>m.Customer.Id)
Html.TextBoxFor(m=>m.Customer.Name)

在您的控制器中,它将自动绑定

public ActionResult SomeAction(Order order)
{
    // order.OrderProperty will be bound
    // order.Customer.Id will be bound
    // order.Customer.Name will be bound
}
于 2010-06-03T19:25:08.343 回答