2010-08-12 5 views
0

J'ai une méthode dans mon service où je crée des entités, dans la méthode j'appelle la méthode Add de mon référentiel pour que les entités soient persistantes quand j'appelle ma méthode save, devrais-je appelle ma méthode Save en dehors de la classe de service ou dans la méthode où j'ajoute les entités au datacontext?Quand persister vos entités commerciales dans vos classes de services

Répondre

1

Une classe de service doit aspirer à être autonome et doit prendre soin d'appeler sa propre méthode save() pour le référentiel qu'elle utilise. De cette façon, il permet l'abstraction du référentiel de ses consommateurs. Et s'il choisit de se passer du dépôt par exemple? Si l'appelé est chargé de faire le save(), alors l'appelé() doit aussi changer. Cela entraînerait une fragilité du code.

Les transactions, cependant, sont différentes.

La classe de service doit participer à une transaction globale si elle a déjà été démarrée par l'appelé. En l'absence de transaction globale, la classe de service doit commencer et terminer sa propre transaction. Par conséquent, la méthode save() ne «commettrait» réellement qu'à la fin de la transaction, qu'elle ait été lancée par la classe de service elle-même ou par l'appelé.

0

Je demanderais, en réponse à quoi créez-vous des entités? les chances sont que la seule raison est d'être persisté finalement. Par définition, votre classe de service serait un bien meilleur endroit pour déclencher le processus de persistance. Les entités dans votre contexte de données doivent uniquement être concernées par la réponse aux commandes provenant de votre service.