Pour un modèle de données propre, j'ai des doutes sur ce point...
En utilisant un flux de travail d'approbation comme exemple, disons que dans mon application web, j'ai une page qui permet à un utilisateur de marquer une demande d'approbation. MyEntityObject
pour approbation. MyEntityObject
a quelques propriétés qui contrôlent son flux d'approbation, donc j'ai une méthode utilitaire commune appelée FlagForApproval(MyEntityObject eo)
.
Est-ce que le page appelez FlagForApproval() pour définir uniquement les propriétés nécessaires et ensuite appeler SaveChanges() quand il est prêt, ou devrait FlagForApproval() enregistrer les changements ?
Le fait que la méthode utilitaire enregistre les modifications semble faire un peu plus que ce qui lui est demandé (et si ce n'était qu'une étape dans une série d'opérations ?), mais en même temps, faire en sorte que la page appelle SaveChanges() et engage les données dans la base de données semble être considéré comme trop proche des responsabilités de la couche de données.
Qu'en pensez-vous ?
(Mise à jour : FWIW, jusqu'à présent, j'ai fait en sorte que les méthodes utilitaires appellent SaveChanges(), de cette façon la page n'a qu'un seul ensemble d'exceptions à gérer, que ce soit la validation ou les données).