Question

J'ai une énumération des codes d'état de livraison. Et lorsque j’enregistre les données de livraison dans la base de données, elles sont stockées avec une clé étrangère dans une table contenant les mêmes données (c’est-à-dire les mêmes codes de livraison).

Quelle est la meilleure stratégie pour maintenir une énumération synchronisée avec les données d'une base de données?

N'oubliez-vous pas d'ajouter à l'énumération lorsqu'un nouveau code est ajouté à la base de données?

Ou chargez-vous les données dans un dictionnaire au démarrage de l'application? Et utiliser le dictionnaire au lieu d'une énumération? Bien que cela signifie que je n'ai pas de représentation fortement typée des données - ce que je veux vraiment.

Ou quelque chose d'autre?

Les données ne sont pas très volatiles, mais de nouveaux codes sont ajoutés à chaque bleu lune

apprécierait toutes les suggestions.

merci

Était-ce utile?

La solution

J'utilise des modèles T4 dans Visual Studio 2008. Ainsi, je peux forcer la génération de code pendant la construction et générer des enums pour chaque table de mon choix.

Un bon point de départ serait Exemple de Hilton Giesenow , qui, je crois, répond exactement à votre question.

Une approche plus intéressante, sous un angle différent, consisterait à utiliser des vues SQL pour émuler des énumérations dans la base de données. De cette façon, vous synchronisez la base de données avec votre code C # (ou autre). Vous pouvez trouver un excellent article à ce sujet sur le blog d'Oleg Sych, ici .

Autres conseils

Lorsque j'utilise une énumération dans le code, je stocke généralement le nom formaté sous la forme d'un varchar dans la base de données plutôt que de conserver un tableau des valeurs d'énumération dans la base de données. Je me rends compte que ce n'est pas aussi normalisé qu'on pourrait le souhaiter, mais je pense que c'est mieux que d'essayer de garder la base de données et mon énumération synchronisées. Il suffit de formater l'insertion / mise à jour et d'analyser la sélection pour reconstituer la valeur dans l'énumération.

Je ne le fais que lorsque je pense que l'énumération va être corrigée - bien que j'aie également effectué des mises à jour peu fréquentes. Si je pense qu'il est probable que les données seront régulièrement mises à jour, je n’utiliserai pas d’énumération et je disposerai d’un tableau séparé dans la base de données avec les références de clé étrangère.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top