2012-11-10 15 views
15

VS 2012とEF 5を使用しています。既存のデータベースからPOCOクラスを作成する既存のデータベースがあります。プロジェクトにADO.NETエンティティデータモデルを追加する手順を実行しました。私は、既存のデータベースを使用するためにウィザードを実行しました。その後、デザイナーが開いた状態でedmxファイルとttファイルを作成しました。しかし、POCOオブジェクトを作成して使用したいと思います。 Microsoftのサイトでは、POCO Entity Framework Generatorは廃止されており、DBContext Generatorを使用する必要があります。私はPOCOクラスを生成するために使用するステップを理解できません。私はedmxデザイナーしか見ることができません。私は実際にはedmxファイルを望んでいないだけでなく、POCOクラスだけです。 EF 5とVS 2012を使用して既存のデータベースからPOCOクラスを作成する方法を教えてください。Entity Framework 5 - 既存のデータベースからPOCOクラスを生成する方法

+0

VS2012はデフォルトでPOCOエンティティとDbContextを生成します。それはあなたのために働かないのですか? – Pawel

答えて

14

使用EF 5.x DbContext Fluent Generator

あなたは、オンラインのテンプレートから、それを追加することができます。

  • POCO
  • ための選択Add New Item
  • 検索オンラインテンプレートはEF 5.xのを追加し、既存のデータベース
  • からEDMXを生成しますDbContext Fluent Generator

それはあなたのプロジェクトに3つのT4テンプレートを追加します。

  • XXX.Context.tt - DbContext
  • XXX.Entities.ttから継承されたコンテキスト - POCOエンティティ
  • XXXを。 Mappings.tt - 各エンティティの流暢なマッピング

BUT edmxデータモデルへのパスを手動で設定する必要があります。これらのテンプレートのそれぞれは、string inputFile = @"$edmxInputFile$";という行を持っています。あなたはここにあなたのEDMXファイルの名前を提供する必要があります。

string inputFile = @"Northwind.edmx";

+0

ありがとうございました。私はテンプレートを追加しましたが、コードは生成されていません。私は$ edmxInputFile $を修正するためにそれらのすべてを変更しましたが、何も起こりません。右クリックして、Run Custom Toolをクリックしました。私は何が欠けていますか? – user31673

+0

@ user31673実際にカスタムツールは必要ありません。ちょうど編集されたテンプレートを保存すると、それは自動的に出力ファイルを生成します(それはテンプレートのノードの下にあります) –

+1

ああ、もう一つは、コンテキストとedmxファイルで生成されたエンティティを削除します。あなたはダイアグラムだけが必要です。 –

9

これを行うためのプロセスは、それはそう、今はかなり合理化です。受け入れられた回答からのステップは、EDMXデザイナ自体から簡単に実行できます。 (詳細はhereを参照)基本的には、

  • は、プロジェクトにADO.NETエンティティデータモデルを追加することによって、その後

を既存のデータベースからモデル(EDMX)を生成しますエンティティデザイナで.edmxファイルを開きます。

エンティティデザイナーの表面上の空の領域を右クリックし、[コード生成アイテムの追加]をポイントします。

[新しい項目の追加]ダイアログで、[オンラインテンプレート]を選択し、[オンラインテンプレートの検索]テキストボックスにDBContextと入力します。

テンプレートに適切なバージョンを選択します(Entity Framework 5.0を対象にする場合は5.0)。

[OK]をクリックします。

これは明らかにすべての作業を行います。ここで引用されている指示は、EF 5.xをインストールするためのオンラインテンプレートを参照しています。DbContext Fluent Generatorが必要です。既にインストールされている場合は、オンラインテンプレートではなく、インストールされたテンプレートで検索する必要はありません。

詳細については、thisページの「DbContextジェネレータテンプレートを使用してオブジェクトレイヤコードを生成する」を参照してください。

関連する問題