Если вы вынуждены использовать модель домена Anemic, куда вы помещаете свою бизнес-логику и вычисляемые поля?

Наш нынешний инструмент O / RM на самом деле не допускает модели с расширенными областями, поэтому мы вынуждены везде использовать анемичные (DTO) сущности. Это сработало нормально, но я продолжаю бороться с тем, куда поместить базовую объектную бизнес-логику и вычисляемые поля.

Текущие слои:

презентацияобслуживаниевместилищеДанные / Entity

Наш уровень хранилища имеет большую часть базовой логики выборки / проверки / сохранения, хотя уровень обслуживания выполняет большую часть более сложной проверки и сохранения (поскольку операции сохранения также выполняют ведение журнала, проверку разрешений и т. Д.). Проблема в том, куда поместить код, подобный этому:

Decimal CalculateTotal(LineItemEntity li)
{
  return li.Quantity * li.Price;
}

или же

Decimal CalculateOrderTotal(OrderEntity order)
{
  Decimal orderTotal = 0;
  foreach (LineItemEntity li in order.LineItems)
  {
    orderTotal += CalculateTotal(li);
  }
  return orderTotal;
}

есть идеи?

Ответы на вопрос(7)

Ваш ответ на вопрос