2010-10-12 10 views
1

Ce que je veux obtenir est plus ou moins l'inverse de ceci:T4 pour générer Enum de table SQL Server valeurs

http://www.olegsych.com/2008/07/t4-template-for-generating-sql-view-from-csharp-enumeration/

J'ai une table de groupe de valeurs (noms de ENUM) et une table de valeurs (valeurs enum), et veulent les transformer en enums. Les deux sont dans SQL Server, et les deux se trouvent dans un .edmx (il y aurait donc plusieurs façons de lire les valeurs).

Y at-il quelque chose "là-bas" qui fait déjà cela (et je ne l'ai pas trouvé)? Sinon, quelle serait la meilleure façon d'aller à la lecture des données (SMO, EDMX avec chargement dynamique, ...)

Répondre

0

Ok, voici comment j'implémenté:

  • utilisation VolatileAssembly du T4 boîte à outils pour faire référence à un ensemble qui ...
  • Met en œuvre une classe d'aide T4 qui fait tout le travail de base de données (lors de l'utilisation EF, assurez-vous d'utiliser une chaîne de connexion lors de l'instanciation du contexte)
  • Dans le .tt, il suffit d'appeler dans la classe d'aide T4 pour obtenir les données dont vous avez besoin et créer votre classe
3

J'ai mis un peu plus d'efforts dans l'écriture such a template il fait toutes ces:

  • génère des valeurs d'énumération des valeurs entières explicites;
  • utilise la convention de dénomination de l'espace de noms de Visual Studio de sorte que les énumérations générées aient l'espace de noms par défaut du projet avec tous les sous-dossiers ajoutés (comme n'importe quel fichier de code dans Visual Studio);
  • ajoute une documentation XML d'énumération complète en utilisant des valeurs de colonne de table de description supplémentaires; si vous ne les avez pas oubliés;
  • nomme correctement le fichier généré et ajoute un attribut supplémentaire dans le code afin que le enum généré ne soit pas examiné par l'analyse de code;
  • les valeurs de la table de recherche de plusieurs mots sont correctement concaténées en équivalents pascal (par exemple La valeur de mot multiple devient MultiWordValue);
  • Les valeurs d'énumération commencent toujours par une lettre;
  • toutes les valeurs d'énumération se composent seulement de lettres et de nombres, tout le reste est découpé;

Quoi qu'il en soit. Tout est très bien documenté dans this blog post.