grimboite/old/unitofwork.md

1.5 KiB

Le pattern de Unit Of Work permet de gérer des instances ayant une corrélation et de s'assurer de la persistance (et cohérence) de ce bloc d'informations au sein d'une même transaction. C'est notamment implémenté au travers de l'interface ITransaction dans NHibernate ou dans la classe DataContext de Linq2SQL.

D'après un article sur MSDN, l'implémentation d'une interface UnitOfWork ressemblerait à ceci:

public interface IUnitOfWork {
  void MarkDirty(object entity);
  void MarkNew(object entity);
  void MarkDeleted(object entity);
  void Commit();
  void Rollback();
}

Pourquoi? Pour pouvoir marquer une instance comme étant modifiée ou supprimée ou nouvelle. Les deux dernières méthodes permettent de réaliser la transaction, ou d'effectuer un rollback si quelque chose a mal tourné. En fonction des flags initialisés sur une instance, cela permet de lancer les méthodes CRUD classiques pour ce type d'objet.