Dans mon projet ASP.NET MVC, mes actions appellent généralement une couche de service pour obtenir des données. J'utilise la même douzaine de POCOs pour tous mes modèles. Je prévois également d'utiliser la couche Service dans les applications console et peut-être d'exposer une api web à un moment donné.
Pour rendre les opérations de ma base de données plus efficaces, ma couche de service n'hydrate que les propriétés du modèle qui sont pertinentes pour la méthode particulière (qui, à ce stade, est principalement déterminée par les besoins des actions de mon contrôleur).
Ainsi, par exemple, je pourrais avoir une classe Order
avec des propriétés Id, Name, Description, Amount, Items
. Pour un appel de service donné, il se peut que je n'aie besoin de remplir que les champs suivants Id, Name, Items
. Un consommateur de ce service ne saura pas nécessairement que Amount
est 0 uniquement parce qu'il n'a pas rempli la propriété.
De même, le consommateur ne saura pas si Items
est vide parce qu'il n'y a en fait aucun élément, ou si cette méthode de service particulière ne remplit tout simplement pas cette propriété.
Et pour un troisième exemple, disons que l'une de mes vues affiche une ItemCount
. Je ne veux pas remplir entièrement mon site Web. Items
j'ai juste besoin d'une propriété supplémentaire sur mon "modèle". Je ne veux pas ajouter cette propriété à mon POCO que les autres méthodes de service utiliseront, car elle ne sera pas remplie ailleurs.
La solution naturelle est donc de créer une POCO conçue spécifiquement pour cette méthode, avec uniquement ces 3 propriétés. De cette façon, le consommateur peut savoir que toutes les propriétés seront remplies avec leurs valeurs réelles. L'inconvénient de cette solution est que je vais finir par écrire des tonnes de modèles de forme similaire.
Des conseils sur la méthode la plus efficace ?