Disons que nous avons deux racines agrégées dans un modèle de domaine: Groupe et Utilisateur.DDD: Comment modéliser l'ajout et la suppression d'entités associées?
Maintenant, les utilisateurs peuvent être ajoutés ou supprimés des groupes. En utilisant le modèle référentiel, je ne modélise les deux interfaces suivantes jusqu'à présent:
interface IGroupRepository
{
Group FindById(int groupId);
}
interface IUserRepository
{
User FindById(int userId);
IQueryable<User> GetGroupMembers(int groupId);
void AddUserToGroup(User user, Group group);
void RemoveUserFromGroup(User user, Group group);
}
D'une certaine manière, ne se sent pas le droit. Je veux réaliser un modèle de domaine propre et ne pas finir avec une simple couche d'accès aux données. Quelle serait une meilleure façon de modéliser ce qui précède?
EDIT: La question fondamentale ici semble être, est-il OK avec les directives de DDD de traiter l'utilisateur comme un 'sous-objet' alors qu'il est en même temps une racine agrégée? Comme je l'ai compris DDD, il indique que les racines agrégées ne doivent être récupérées et stockées qu'à partir d'un endroit (le référentiel), c'est pourquoi je suis un peu confus.
information NHibernate se trouve maintenant à http://nhforge.org/ - l'ancien site a été pendant un certain temps maintenant –
est-ce pas cette approche traitant l'utilisateur comme non étant une racine agrégée? Je suis confus btw, je ne me soucie pas de la persistance tout à fait - juste à la recherche du motif de conception générale – JacobE
Sort of. Si vous considérez seulement cette situation alors ce n'est probablement pas une racine agrégée. Cependant, je suppose que vous utiliseriez l'utilisateur pour beaucoup plus. La seule raison d'avoir un dépôt est comme un moyen de persister (la plupart du temps). Alors imaginez comment vous le modéliseriez d'abord sans le référentiel. –