3

DbContextから分離されたプロジェクトで、コードを最初に(またはT4で生成して)POCOを保持するのが好きです。これは、エンティティクラスが1つのデータアクセスサービスに結合されていないことを確認するのに役立ちます。

新しいDBファーストEDMXモデルを作成すると、ウィザードはT4テンプレートを生成して、DbContextと同じプロジェクトにすべてのPOCOを生成します。このテンプレートを変更して、クラスを別のプロジェクトに追加するにはどうすればよいですか?

よく調べてみると、DbContextを新しいプロジェクトに移動する方がはるかに簡単ですが、このためのT4には呼び出しがないfileManager.StartNewFileため、他の場所にファイルを作成するように指示する場所がわかりません。

4

2 に答える 2

3

DAL プロジェクトから .tt ファイルを除外して、別のプロジェクトにリンクとして追加できます。

これは、モデルを認識できるため、テンプレートを変更する必要がないことを意味します。

テンプレートの実行時に生成されるファイルは、データ オブジェクト アセンブリに含まれますが、物理ファイルは DAL プロジェクトに含まれます。

唯一の欠点は、モデルを更新するときにカスタム ツールを手動で実行する必要があることです。

于 2012-12-19T15:16:55.860 に答える
2

私は言う:

1.- モデル プロジェクト (MyProject.Model プロジェクト) にファイルを作成します。目的の名前の .tt ファイルを作成します... (この例では MyModel.tt)

2.- DAL プロジェクトに移動し、WhateverModel.tt ファイルを開き、コンテンツを MyModel.tt にコピーします...

3.- DALプロジェクトからWhateverModel.ttを削除します。

4.- MyModel.tt で以下を探します。

const string inputFile = @"WhateverModel.edmx";

5.- そして、次のように置き換えます。

const string inputFile = @"..\TheRelativeRouteToYourEdmxFileGoesHere.edmx";

6.-そして... カスタムツールを実行してモデルを生成します。

注: 7.-確かに、using ディレクティブと名前空間をいくつか変更する必要がありますが、それは私にとってはうまくいきます。

于 2016-03-09T06:53:02.610 に答える