14

VS2012で、新しいEFモデル(.edmx)を作成すると、DbContextがデフォルトのコード生成であり、.tt(T4テンプレート)ファイルがソリューションエクスプローラーの.edmxファイルの下にネストされていることに気付きました。

質問: これらの.ttファイルを別のフォルダーまたはプロジェクトに移動する方法はありますか? ソリューションエクスプローラーでドラッグアンドドロップしようとすると、ネストされた.ttファイルを移動できません。

問題の詳細: 以前(VS2010では)、POCOの1つの.ttファイルをDataDefinitionsというクラスライブラリに移動し、コンテキスト用のもう1つの.ttファイルをDataAccessというクラスライブラリに残していました。これらのファイルを移動できなくなり、アセットを別のレイヤーに分割できないようになりました。

このMSDNの記事では、一番下までスクロールすると、.ttファイルがどのようにネストされているかを確認できます... http://msdn.microsoft.com/en-us/data/jj613116

4

3 に答える 3

24

テンプレートがEDMXファイルへの依存関係として追加されるのは奇妙な新機能です。プロジェクトの.csprojファイルを編集することで修正できます(メモ帳で修正するか、VSでプロジェクトをアンロードして編集できます)。あなたはこのようなものを見つけるでしょう:

<None Include="Model.tt">
  <Generator>TextTemplatingFileGenerator</Generator>
  <DependentUpon>Model.edmx</DependentUpon>
  <LastGenOutput>Model.cs</LastGenOutput>
</None>

要素を削除するだけDependentUponで、テンプレートアイテムがプロジェクトの独立した部分になります。

于 2012-08-30T20:23:06.997 に答える
2

EFデータモデルとは別のプロジェクトでEF5.xaDBContextを使用しています。DependentUponLadislavが述べたようにプロジェクトファイルのエントリを削除したにもかかわらず、ここではクラスはまだ私のModel1.ttファイルの下に表示されていました。

これを回避するには、各テーブルのプロジェクトファイルからエントリの一部も削除する必要がありました。

<Compile Include="MyTableName.cs">
  <DependentUpon>Model1.tt</DependentUpon>
</Compile>

タグのある行のみを<DependentUpon>削除し、<Compile Include="...">タグは保持する必要があります。エントリ全体を削除すると、ファイルがプロジェクトリストから消えます。<Compile Include="MyTableName.cs"\>簡潔にするために、エントリをに短縮することができます。

于 2013-04-25T13:25:01.287 に答える
0

プロジェクトファイルを編集する代わりに、同じ名前のEFモデルをプロジェクトに追加し、ソリューションを閉じ、他のプロジェクトからモデルファイルをコピーして、ソリューションを再度開きます。edmxプロパティで名前空間を変更してから、モデルを再コンパイルします。

于 2014-02-26T21:30:01.837 に答える