Ajout de propriétés à modèle T4 - serveur picking, base de données, table

StackOverflow https://stackoverflow.com/questions/538988

  •  22-08-2019
  •  | 
  •  

Question

Folks,

Je voudrais créer des modèles de T4 pour générer des fichiers de classe (environ 7 par table) à partir d'une base de données pour soutenir notre ORM en interne (ne demandez pas - des raisons de temps de l'histoire et historiques .....)

Ce que j'aimerais vraiment faire est d'avoir une propriété sur mon principal modèle de TT pour choisir visuellement serveur, base de données et table pour laquelle pour créer les fichiers (quelque chose comme le sélecteur de table CodeSmith).

Puisque cela ne semble pas exister (ou non?), Je me suis dit meilleure chose utilise trois propriété de chaîne pour le serveur, base de données, nom de la table, et utiliser SMO pour se connecter à cette table et obtenir les données colonne I besoin.

J'ai essayé de suivre les exemples de Oleg Sych, et est venu avec:

<#@ property name="serverName" processor="PropertyProcessor" type="System.String" #>
<#@ property name="databaseName" processor="PropertyProcessor" type="System.String" #>
<#@ property name="tableName" processor="PropertyProcessor" type="System.String" #>

mais comment puis-je référence ces propriétés dans mon bloc de code qui se connecte au serveur spécifié à l'aide SMO pour récupérer les données?

<#
    Server server = new Server();
    Database database = new Database(server, "DASECO_DEV");
    Table table = new Table(database, "T_User");
    table.Refresh();
#>

J'ai essayé de mettre un <#= serverName #> à l'intérieur des crochets du serveur () constructeur - mais cela ne fonctionne pas :-( On dirait que je suis un peu coincé ici ...... quel est le point d'avoir des propriétés si je ne peuvent pas évaluer et utiliser leurs valeurs: -)

preneurs ?? Les

Marc

Était-ce utile?

La solution

Comment cela?

<#    
    Server server = new Server(serverName);    
    Database database = new Database(server, databaseName);    
    Table table = new Table(database, tableName);    
    table.Refresh();
#>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top