Если вы вынуждены использовать модель домена 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;
}
есть идеи?