4

これまでのところ、classLibrary プロジェクトを作成し、新しい Ado.net Entity データ モデルを挿入し、exixting データベースから生成していました。クラスおよびオブジェクト クラス コードは自動的に作成されます。これは私にとって重要ではありません。

しかし、私はこれを行い、ObjectContext クラス (例: SomeEntities) とテーブル クラスを 2 つの calss ライブラリに分離したいと考えています。

データベース テーブルのプロパティを変更すると、edmx モデルが更新され、クラスが自動的に更新されます。

これを行う方法はありますか?データベースとデータが含まれているため、コードファーストを使用していません。同様に、モデルファーストを使用していません。データベースファーストを使用していますが、分離できません

4

1 に答える 1

8

タイトルに「poco」が含まれているので、EF4 POCOGeneratorT4テンプレートを使用していると思います。

そうすれば、POCOクラスとObjectContextを2つの異なるクラスライブラリに分けることができます。T4テンプレートは、2つの異なるファイルで構成されているため、そのシナリオ用に準備されています。

  • POCOGenerator.Context.tt- >派生したObjectContextを作成する責任があります
  • POCOGenerator.tt- >POCOエンティティの作成を担当

EDMXファイルがあるクラスライブラリにPOCOジェネレーターを追加すると、デフォルトでは両方のttファイルがそこに追加されます。

ただし、2番目のファイル(POCOGenerator.tt)を別のクラスライブラリに移動できます。(コンテキストが配置されているEDMXプロジェクトは、POCOクラスを認識するために、このライブラリを参照する必要があります。)その後、このファイルをテキストエディタで開きます。このファイルの最初の行のいくつかは次のようになります。

...
string inputFile = @"MyModel.edmx";
EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);
...

ここで、edmxファイルへのパスを変更する必要があります(POCOGenerator.ttでのみ、POCOGenerator.Context.ttは変更しないでください)。Visual Studioの同じソリューションにedmxプロジェクトとPOCOプロジェクトがあるとすると、新しいパスは次のようになります。

...
string inputFile = @"..\..\MyEDMXProject\MyModel.edmx";
EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);
...

これで、2つの異なるプロジェクトから別々に両方のファイルを実行できます。1つはコンテキストファイルを作成し、もう1つはPOCOファイルを作成します。

于 2011-04-06T19:54:31.350 に答える