Se você é forçado a usar um modelo de domínio anêmico, onde coloca sua lógica de negócios e campos calculados?
Nossa ferramenta de O / RM atual não permite realmente modelos de domínio sofisticados, portanto somos forçados a utilizar entidades anêmicas (DTO) em qualquer lugar. Isso funcionou bem, mas continuo lutando com onde colocar a lógica comercial básica baseada em objetos e os campos calculados.
Camadas atuais:
ApresentaçãoServiçoRepositórioDados / EntidadeNossa camada de repositório possui a maior parte da lógica básica de buscar / validar / salvar, embora a camada de serviço faça muitas das mais complexas validações e salvamentos (uma vez que as operações de salvamento também fazem log, verificação de permissões, etc.). O problema é onde colocar código como este:
Decimal CalculateTotal(LineItemEntity li)
{
return li.Quantity * li.Price;
}
ou
Decimal CalculateOrderTotal(OrderEntity order)
{
Decimal orderTotal = 0;
foreach (LineItemEntity li in order.LineItems)
{
orderTotal += CalculateTotal(li);
}
return orderTotal;
}
Alguma ideia?