Агрегированная корневая логика домена - PullRequest
1 голос
/ 31 октября 2011

Предположим, что у меня есть эти 3 класса ниже:

public class User 
{
   public int UserId { get; set; }
   public ICollection<Location> { get; set; }
}
public class Location
{
   public int LocationId { get; set; }
   public int UserId { get; set; }
   public ICollection<Sale> Sales { get; set; }
}
public class Sale
{
  public int SaleId { get; set; }
  public int LocationId { get; set; }
  public decimal Cash { get; set; }
}

У меня есть требование на одной странице, чтобы я отображал общую сумму денежных средств для всех местоположений пользователя, вошедшего в систему. Я думаю о том, что я добавлю метод GetTotalCash () в класс Locations и реализую суммирование с помощью LINQ, но проблема в том, что я буду получать доступ к объекту Locations через класс User, и я не смогу вызвать метод суммирования, поскольку свойство Location является ICollection для класса User. Должен ли я вместо этого поместить логику в класс User? но это не имеет смысла, так как это не поведение объекта User или нет?

Кстати, я использую EF 4.1 Code First и MVC 3.

Спасибо большое!

1 Ответ

0 голосов
/ 01 ноября 2011

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

, тогда предопределили присваиваются каждому информационному классу экспертов и делегируются из совокупного корня

...