J'ai remarqué Repository est généralement mis en œuvre dans l'une des manières suivantes:DDD: Les référentiels sont des collections d'objets en mémoire?
Méthode 1
void Add(object obj);
void Remove(object obj);
object GetBy(int id);
Méthode 2
void Save(object obj); // Used both for Insert and Update scenarios
void Remove(object obj);
object GetBy(int id);
Méthode 1 a la sémantique de collecte (qui est comment les référentiels sont définis). Nous pouvons obtenir un objet d'un dépôt et le modifier. Mais nous ne disons pas à la collection de le mettre à jour. L'implémentation d'un référentiel de cette manière nécessite un autre mécanisme pour conserver les modifications apportées à un objet en mémoire. Pour autant que je sache, cela est fait en utilisant Unité de travail. Cependant, certains affirment que l'UoW n'est nécessaire que lorsque vous avez besoin du contrôle des transactions dans votre système.
La méthode 2 élimine le besoin d'avoir des UOW. Vous pouvez appeler la méthode Save() et elle détermine si l'objet est nouveau et doit être inséré ou modifié et doit être mis à jour. Il utilise ensuite les mappeurs de données pour conserver les modifications apportées à la base de données. Alors que cela rend la vie beaucoup plus facile, un référentiel modélisé n'a pas de sémantique de collection. Ce modèle a une sémantique DAO.
Je suis vraiment confus à ce sujet. Si les dépôts imitent la collection d'objets en mémoire, nous devrions les modéliser selon la méthode 1.
Que pensez-vous de cela?
Mosh
J'utilise la première option et j'en suis très content. J'utilise actuellement NHibernate pour que le UoW soit gratuit. – goenning