model.tt
Vs2010の別のプロジェクトに(POCOエンティティクラスを含む)ファイルを移動する方法について、この質問に対するいくつかの回答を見てきました
これは EF5 では機能しないようで、model.tt
ファイルが edmx ファイルのサブアイテムであるためのようです。
Entity Framework 5/VS 2012 で同じことを達成するにはどうすればよいですか?
model.tt
Vs2010の別のプロジェクトに(POCOエンティティクラスを含む)ファイルを移動する方法について、この質問に対するいくつかの回答を見てきました
これは EF5 では機能しないようで、model.tt
ファイルが edmx ファイルのサブアイテムであるためのようです。
Entity Framework 5/VS 2012 で同じことを達成するにはどうすればよいですか?
私が知っている最良の答えは、単純に現在のプロジェクトから model.tt (適切な名前を挿入) ファイルを切り取り、目的のプロジェクトに追加することです。私は、まさにその理由で EF が使用する .tt ファイルを書き直すところまで行きました。
私は関心の分離のファンであり、適切な .tt ファイルを次のプロジェクトに配置しています: DataAccess (model.context.tt)、Entity (model.tt)、および Repository (model.repository.tt)。もちろん、.tt ファイルの内容をいじって .edmx を指すようにする必要がありますが、それは簡単なことです。すべての t4 変換を実行するために、VS2012 にはオプション Build | すべての T4 を変換します。これにより、ソリューション内のすべての T4 ファイルが処理されます。
次のプロセスに従います。
.edmx がまだ存在しない場合は作成します。
まだ行っていない場合は、右クリックして [コード生成項目の追加] を選択し、EF DbContext 5.0 ジェネレーターを追加します (これをいじりたいと思いますが、このプロセスは任意の t4 で機能します)。
これにより、モデルと model.context の 2 つの .tt ファイルが取得されます。
Windows エクスプローラーにドロップし、ディレクトリで model.tt ファイルを見つけて、それを "Entity" ディレクトリ (t4 を生成する場所) にコピーします。
VS に戻り、.edmx プロジェクトから削除し、新しいプロジェクトに「既存の項目を追加」します。
たとえば、2 つのプロジェクトの名前が上記のようになっている場合 (DataAccess に .edmx を含め、Entity にモデル情報を含める)、model.tt ファイルの入力ファイルの名前を値 (行5) "const string inputFile = ".edmx の名前" から "..\Directory を含む .edmx\name of .edmx" へ。
T4 を実行すると、問題なく動作します。
コードが生成されないということは、バグです。これは、追跡に使用するバグですhttp://entityframework.codeplex.com/workitem/453-いくつかの回避策が含まれています。別のオプションは、ttファイルを右クリックして[カスタムツールの実行]を選択することにより、コード生成を強制することです。