Par exemple, si j'ai 2 racines agrégées AR1 et AR2, et AR1 met à jour AR2 d'une manière ou d'une autre - quelle est la bonne façon de stocker ce changement dans le référentiel? AR1 doit-il appeler la méthode de stockage du référentiel?Est-il correct de laisser les entités appeler les méthodes de stockage du référentiel?
Répondre
Je n'aime pas l'idée d'avoir des dépôts validant les modifications de la base de données.
Dans mon cas, xRepository.Add (x) attache uniquement l'entité/AR à l'unité de travail actuelle.
Pour effectuer la validation réelle sur db, j'appelle commit sur mon site.
par ex.
C#
using(var uow = UoW.Begin()
{
var ar1Repo = new Ar1Repository(uow);
var ar1 = ar1Repo.FindById(123); //fetch already persistent entity
var ar1.MakeChangesToAr2();
//both ar1 and ar2 are persistent and known by the UoW
//so no need to add them to the repositories since they
//are already _in_ the repositories
uow.Commit();
}
ou:
using(var uow = UoW.Begin()
{
var ar1Repo = new Ar1Repository(uow);
var ar2Repo = new Ar2Repository(uow);
var ar2 = new AR2();
var ar1 = new AR1(AR2);
ar1.MakeChangesToAr2();
//attach the new entities to the uow
ar1Repo.Add(ar1);
ar2Repo.Add(ar2);
uow.Commit();
}
De cette façon, vous pouvez commettre des lots entiers de changements à la fois, au lieu d'essayer de faire commits atomiques par entité où vous pourriez avoir des problèmes commis objet graphiques.
Cette idée est basée sur les idées de Jimmy Nilssons dans son livre Appliquant Domain Driven Design et patterns.
Je voudrais avoir une méthode dans AR2 nommée Save(). Cette méthode instancie le référentiel pour qu'il se sauvegarde lui-même. AR1 peut alors appeler la méthode Save() sur AR2 une fois qu'il a effectué la modification.
Est-ce vraiment le chemin à parcourir? Cela ne sonne pas comme sa partie du domaine. Et les entités ne devraient pas savoir qu'elles sont persistées? –
Cela ressemblerait plus à Active Record qu'à true DDD –
- 1. Appeler les méthodes ViewModel
- 2. Appeler les méthodes CRUD du référentiel depuis le Controller ou ViewModel?
- 3. Méthodes d'appel entre les référentiels - Modèle de référentiel
- 4. Comment appeler les méthodes wcf à partir du proxy client
- 5. iphone: contrôleur de barre d'onglets: comment appeler les méthodes?
- 6. méthodes dans les entités DDD par rapport aux services
- 7. Passer des entités complètes au référentiel ou simplement les ID pour les supprimer?
- 8. Est-il correct d'utiliser IoC pour l'extensibilité de mes entités ou du modèle de domaine?
- 9. Entités de sérialisation avec les services RIA
- 10. Comment appeler les méthodes du plugin jquery personnalisé à partir de mon propre plugin?
- 11. Enregistrer les entités reçues du service WCF
- 12. Objectif C: Comment appeler les variables d'autres méthodes
- 13. Méthodes d'extension des entités de suivi automatique
- 14. Problème avec la création de référentiel dans les entités C# et ADO.NET
- 15. comment appeler les méthodes javascript séquentiellement sur l'événement onclick
- 16. Obtenir toutes les révisions du référentiel CVS
- 17. Comment gérer les hiérarchies du référentiel GIT?
- 18. comment appeler les méthodes raphael sur des objets jquery?
- 19. Comment générer du SQL optimisé avec mes méthodes partielles (ajoutées) sur les entités LINQ
- 20. Gérer correctement les entités transitoires dans NHibernate
- 21. Partage du stockage entre les serveurs
- 22. com4j versus jacob pour appeler les méthodes COM depuis Java
- 23. Appeler les méthodes @Controller une fois par demande
- 24. Comment appeler les fonctions/méthodes C++ via JavaScript
- 25. Comment appeler des méthodes sur les scalaires Perl?
- 26. Nexus: suppression du référentiel
- 27. les méthodes de marquage et les appeler à partir d'un objet client par tag
- 28. Analysant référentiel sur les ordinateurs du groupe de travail
- 29. Différence entre les méthodes de classe et les méthodes d'instance?
- 30. Appeler Page Javascript Méthodes de WatiN?
De grands points Roger, mais je ne pense pas que cela réponde à la question principale qui est de savoir s'il est acceptable d'avoir une méthode d'appel Entity sur le référentiel. Je pense que le consensus général est "non, n'autorise pas les entités à appeler les méthodes du référentiel" car c'est une rupture indirecte de l'ignorance de la persistance et rend le test plus difficile. – jpierson