Question

a récemment terminé la lecture Eric Evans Domain Driven Design (très instructif, très agréable) viennent cependant premier projet majeur depuis la fin du livre et a obtenu la question comment gérer le modèle de domaine sauver?

J'apprécie l'utilisation des services / dépôts et comment ils peuvent aider le modèle mais comment seraient-ils gérer le modèle sauver?

Mon précédent modèle de domaine enregistre suivraient la structure d'appel de méthode suivante;

ParentClass.Save {

ParentClassDB.Save

ChildObject1.Save

       ChildObject1DB.Save

ChildObject2.Save

       ChildObject2DB.Save  
  etc etc 

}

Est-ce que le contrôle de prise de service d'appeler des routines de sauvegarde publique approprié sur les objets enfants?

Était-ce utile?

La solution

En DDD, l'entité de domaine ne prend pas soin de sa persistance. Vous ne devriez pas avoir une méthode de Save() sur elle, idéalement.

Votre dépôt aura une telle méthode Save, qui prend une instance d'entité paramètre:

public class PersonRepository
{
   //...

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

   //...
}

En fonction de votre pile, un ORM va gérer l'économie d'objet, ou vous allez vous en construisant une requête pour sauver la personne, ou vous renseignera paramètres de procédure stockée avec de vos valeurs d'instance, etc.

Si je comprends bien ce que vous avez fait, il peut être nécessaire de déplacer la logique de persistance que vous mettez dans les entités de domaine ailleurs, probablement dans des dépôts ou dans le DAL utilisé par vos dépôts.

Autres conseils

Utilisez-vous des racines globales? Ils sont responsilbe pour sauver leurs entités.

S'il y a beaucoup de modifications en cours d'une manière pourrait être de résumer cette logique dans un service de domaine et que le service manient la sauve par les racines en agrégats.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top