Je vais implémenter un référentiel, et je voudrais utiliser le modèle UOW car le consommateur du référentiel pourrait effectuer plusieurs opérations, et je veux les valider à la fois.
Après avoir lu plusieurs articles sur le sujet, je ne comprends toujours pas comment relier ces deux éléments, selon l'article, il est fait d'une manière u autre.
Parfois, l'UOW est quelque chose interne au référentiel:
public class Repository
{
UnitOfWork _uow;
public Repository()
{
_uow = IoC.Get<UnitOfWork>();
}
public void Save(Entity e)
{
_uow.Track(e);
}
public void SubmittChanges()
{
SaveInStorage(_uow.GetChanges());
}
}
Et parfois c'est externe:
public class Repository
{
public void Save(Entity e, UnitOfWork uow)
{
uow.Track(e);
}
public void SubmittChanges(UnitOfWork uow)
{
SaveInStorage(uow.GetChanges());
}
}
D'autres fois, c'est l'UOW qui fait référence au référentiel
public class UnitOfWork
{
Repository _repository;
public UnitOfWork(Repository repository)
{
_repository = repository;
}
public void Save(Entity e)
{
this.Track(e);
}
public void SubmittChanges()
{
_repository.Save(this.GetChanges());
}
}
Comment ces deux éléments sont-ils liés? UOW suit les éléments qui doivent être modifiés, et le référentiel contient la logique pour conserver ces changements, mais ... qui appelle qui? Est-ce que le dernier a plus de sens?
Qui gère également la connexion? Si plusieurs opérations doivent être effectuées dans le référentiel, je pense que l'utilisation de la même connexion et même d'une transaction est plus saine, alors peut-être que vous mettez l'objet de connexion à l'intérieur de l'UOW et que celui-ci à l'intérieur du référentiel a également du sens.
À votre santé