Модели DDD и MVC имеют удостоверение личности отдельной сущности или самой сущности?

StackOverflow https://stackoverflow.com/questions/2968928

Вопрос

Если у вас есть заказ, который ссылается на клиента, включает ли модель идентификатор клиента или копию объекта клиента, как объект Value (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.

Это также подразумевает, что репозиторий понимает, как справиться с объектом клиента, который он находит в объекте заказа, когда они вызовут сохранение (если мы выберем первый вариант). Если мы выберем второй вариант, нам нужно будет знать, где в модели представления, чтобы ее поместить.

Убедитесь, что они выберут существующего клиента. Тем не менее, также уверен, что они могут захотеть изменить информацию на месте в форме отображения. Можно утверждать, что контроллер извлечь объект клиента, отправить изменения клиента отдельно в репозиторий, а затем отправить изменения в заказ, сохраняя CustomerID в заказе.

Это было полезно?

Решение

Если у вас есть следующая модель:

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
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top