Pergunta

Recentemente leitura acabado Eric Evans Domain Driven design (muito informativo, muito agradável) no entanto vêm para primeiro grande projeto desde que terminou o livro e tem a questão como lidar com o modelo de domínio salvar?

Eu aprecio o uso de serviços / repositórios e como eles podem ajudar o modelo, mas como é que eles lidam com o modelo de economia?

O meu modelo de domínio anterior salva iria seguir a seguinte estrutura chamada de método;

ParentClass.Save {

ParentClassDB.Save

ChildObject1.Save

       ChildObject1DB.Save

ChildObject2.Save

       ChildObject2DB.Save  
  etc etc 

}

Será que o controle de serviço take de chamar o apropriado salvar rotinas sobre os objetos filho?

Foi útil?

Solução

No DDD, a entidade de domínio não cuidar de sua persistência. Você não deve ter um método Save() nele, idealmente.

Seu repositório terá um tal método Save, que leva uma instância entidade no parâmetro:

public class PersonRepository
{
   //...

   public void Save(Person person)
   {
      this.dataContext.Save(person);
   }

   //...
}

Dependendo do seu stack, um ORM vai lidar com salvar o objeto, ou você vai acabar com a construção de uma consulta para salvar a pessoa, ou você vai preencher parâmetros de procedimento armazenado com a partir de seus valores de instância, etc.

Se bem entendi o que você fez, pode ser necessário para mover a lógica de persistência você colocar nas entidades de domínio em outro lugar, provavelmente em repositórios, ou na DAL usado por seus repositórios.

Outras dicas

Você usa raízes de agregação? Eles são responsilbe para salvar suas entidades.

Se houver muitas modificações em curso uma maneira poderia ser para encapsular essa lógica em um serviço de domínio e ter o identificador de serviço da salva através das raízes de agregação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top