Modèle de domaine Enregistrement
-
22-08-2019 - |
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?
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.