Depende do tipo de arquitetura que você deseja.
- No Design Orientado a Domínio, você criaria um Modelo de Domínio que teria dados e funcionalidade.
Isso significaria que um Orderpossui uma propriedade (ou método) que retornaria o preço total do pedido com base no OrderLines. Eles Ordertambém teriam um método AddOrderItem(Product product, int amount)e Orderverificariam se já existe um OrderLinepara esse produto específico.
Nesse modelo, você também teria objetos que não são entidades reais, como um Repositorypara acessar dados ou um Factorypara criar entidades. Estes são chamados de Serviços de Domínio. Uma camada de aplicativo é responsável por chamar os Serviços de Domínio (por exemplo, para recuperar uma entidade do banco de dados) e, em seguida, executará a funcionalidade na entidade. O Application Layerdeve ser o mais fino possível.
Este é um bom artigo sobre DDD, que explica esses conceitos em mais detalhes.
- Você também pode usar um modelo de domínio anêmico . Isso significa que suas entidades consistem em propriedades get / set e não contêm comportamento. Nesse design, sua Camada de Negócios conterá o comportamento, como calcular o
Orderpreço e verificar se há duplicatas OrderLines.
Existem opiniões diferentes sobre se um Modelo de Domínio Anêmico é uma coisa ruim. Pessoalmente , prefiro um modelo de domínio real.
Este artigo descreve as diferenças entre um modelo de domínio anêmico e não anêmico.