2011-01-05 4 views
7

テンプレートD0ALを含むクラスライブラリ内のSQL ServerのルックアップテーブルからC#列挙型を生成するのに、テンプレートposted in this threadを使用しています。T4クラスライブラリ内のテンプレートと接続文字列

現時点では、テンプレートで使用されている接続文字列に、クラスライブラリにテンプレートインクルードファイルが埋め込まれています。テンプレートを物理パスを含めることなく、メインプロジェクト(WAP)のweb.configから接続文字列を取得する便利な方法はありますか?または、これにアプローチするより良い方法がありますか?

編集

Iは、(その後、しないデータベースにC#で定義される)列挙コンテンツを含むテーブル値関数を返すSQL CLRアセンブリを作成すると考えてきたが、私はどのようなパフォーマンスがヒットするのかわからない。それが重要であるかどうかはアプリケーションに依存することは明らかですが、これが最良の回避策であることがわかっているのであれば、駄目な道を諦めるのは嫌です。

答えて

10

T4テンプレート..\..\wwwweb.configマイT4テンプレートが実行されている場所に関連して配置されているディレクトリへの相対パスである

<# var path = Host.ResolvePath(@"..\..\www"); #> 

を実行するときに、私はweb.configから読み取るための、次のアプローチを使用し

var config = ConfigurationManager.OpenMappedExeConfiguration(
    new ExeConfigurationFileMap { ExeConfigFilename = location [email protected]"\web.config" }, 
    ConfigurationUserLevel.None); 

var connStrings = config.ConnectionStrings; 
+0

私はあらゆる種類のパスをハードコードする必要はありませんが、それは起こりそうにないようです。ありがとう。 –

+3

もちろん、あなたはテンプレートにあなたの設定に関連してどのように配置されているかを伝える必要がありますが、ハードコーディングは考慮されていません...プロジェクト間の相対的な位置が同じであれば、まだ動作します。 –