J'ai une situation où j'ai plusieurs lignes dans une base de données. Par exemple, disons que nous avons une table appelée ReportRendererType.Architecture suggérée pour associer du code à des lignes db
lignes pourraient être:
- Ligne Graphique
- Bar Graph
- Grille
etc.
Je peux utiliser la base de données pour stocker comment les utilisateurs veulent voir notamment rapports particuliers. Par exemple. Frank aime le rapport sur les bénéfices affiché sous forme de graphique à barres. Ce serait bien si je pouvais associer du code avec l'entrée dans le db. En d'autres termes, ce serait génial si la classe LineGraphRenderer savait qu'elle était associée à la ligne 1 de la table ReportRenderType. Un exemple trivial de la raison pour laquelle cela serait utile est que vous pourriez remplir une liste déroulante des options ReportRenderType, puis sélectionner une valeur et une classe Manager pourrait facilement comprendre comment afficher le rapport étant donné la valeur sélectionnée dans la liste déroulante. La question est alors - comment faites-vous l'association entre la DB et ce morceau de code.
Il y a beaucoup d'options:
A. Lorsque vous prenez la classe LineGraphRenderer, vous pourriez avoir un ReportRendererType de propriété qui retourne la clé primaire de la ligne associée.
B. Vous pourriez avoir un LineGraphRenderer renvoyer une énumération qui avait une valeur de la clé primaire (C# vous permet de le faire en définissant explicitement la valeur du code de hachage) cela donne un typage statique, et un seul emplacement pour tous les db Entrées
C. Vous pouvez avoir une propriété ReportRendererType sur LineGraphRenderer qui a renvoyé la clé primaire mais récupéré la valeur de la ligne associée à partir d'un fichier de paramètres. Cela faciliterait la création des associations, en particulier si quelqu'un d'autre a des valeurs de clé primaire différentes. Par exemple, la société A pourrait avoir LineGraph stocké dans la ligne 1, mais la société B pourrait avoir LineGraph stocké dans la ligne 2.
Malheureusement, toutes ces façons semblent également avoir des inconvénients. Je me demande comment ce problème a été abordé par d'autres et s'ils ont trouvé d'excellentes façons de faire les choses qui me manquent.
Élevé. Silly n'est peut-être pas le bon mot, mais c'est un anti-pattern. – marr75
J'avais l'habitude d'avoir des idées comme ça. Quand j'étais plus jeune, et je suis resté jusqu'à 3 heures du matin sur le sucre et la caféine. J'en ai grandi et je suis devenu capable de voir les limites entre les choses. –
Donc, si vous vouliez représenter quelque chose (comme la façon dont vous devriez afficher un graphique), vous auriez besoin de stocker des informations dans la base de données. À un moment donné, vous devez déterminer quel code va fonctionner en fonction de cette information. Quelle serait une meilleure approche? À un moment donné, vous devez associer cette ligne au code, n'est-ce pas? – Daniel