web-dev-qa-db-ja.com

EF 4 EDMXをEF 6にアップグレードする

私のアプリケーションは、EF 4で最初にEDMXデータベースを使用しています。EF6にすべてをアップグレードしたいと思います。 EF 6で変更されました。その後、EDMXによって生成されたコードも間違ったネームスペースなどを使用していることに気付きました。これまでのところ、カスタムT4を使用していません。

既存のEDMXをEF 6にアップグレードするにはどうすればよいですか。

ありがとうございました。

45
SolarX
  1. 古い.ttファイルを削除します
  2. デザイナーモードでedmxファイルを開きます(モデルを見ることができます)
  3. 空きスペースを右クリックします
  4. [コード生成アイテムの追加]を選択します
  5. ダイアログで「EF 6.x DbContextコード生成アイテム」(このようなもの)を選択します
  6. Edmxを保存すると、新しい名前空間などを使用してすべてのクラスが生成されます
56
Rand Random

ここでRand RandomとDean Oliverが出した回答に加えて、次の MSDN link に言及して、EF6にアップグレードするための一般的な手順を説明します。必要な手動手順を過小評価しないでください...

ロードマップは次のとおりです(上記のリンクの詳細を参照)。

  1. Preparation:をインストールします Entity Framework 6 Tools for Visual Studio 2012/13

  2. EF6 NuGetパッケージをインストールします

  3. System.Data.Entity.dllへのAssembly referencesが削除されていることを確認します(注:EF6 NuGetパッケージをインストールすると、プロジェクトからSystem.Data.Entityへの参照が自動的に削除されます)。

  4. EF Designer(EDMX)モデルをuse EF 6.xコード生成に交換します。

    注:

    • その後、「エンティティデータモデルデザイナは要求したファイルを表示できません」というメッセージが表示されたら、表示されたテキストメッセージ「The entity Data Model Designer」のリンクmodifyをクリックします。 ... modify ... "で、テーブルを表示できます。ですべて選択 Ctrl+A、次に押す Del、右クリックして[データベースからモデルを更新]を選択し、最後に Ctrl+S。これにより、デフォルトのT4-Template "EF 6.x DbContext Generator"を使用してモデルが最新バージョンに更新されます。

    • プロジェクトでObjectContextを使用している場合、テンプレートのダウンロードを検討する必要があります "EF 6.x EntityObject Generator" 。次に、モデルデザイナーで右クリックし、[コード生成アイテムを追加]を選択して、まだ使用していない名前を選択します。適切なクラスを生成します。その後、すべての古い( "*.tt")ファイルと関連する生成されたクラス( "*.cs")ファイルを削除する必要があります。

  5. 更新された名前空間core EF typesが使用されている場合、つまり.

    • System.Data.*の任意のタイプがSystem.Data.Entity.Core.*に移動されます
    • System.Data.EntityState => System.Data.Entity.EntityState
    • System.Data.Objects.DataClasses.EdmFunctionAttribute => System.Data.Entity.DbFunctionAttribute
      注:このクラスは名前が変更されました。古い名前のクラスはまだ存在し、機能していますが、現在は廃止としてマークされています。
    • System.Data.Objects.EntityFunctions => System.Data.Entity.DbFunctions
      注:このクラスは名前が変更されました。古い名前のクラスはまだ存在し、機能していますが、現在は廃止としてマークされています。
    • 空間クラス(例:DbGeographyDbGeometry)は、
      System.Data.Spatial => System.Data.Entity.Spatial

N.B.:

29
Matt

ランダムランダムが提案した手順と同様に。 VS2012を使用している場合は、Visual Studio 2012用のEntity Framework 6ツールを忘れずにインストールしてください。 ここからダウンロード

これにより、[ステップ4:コード生成アイテムの追加]をクリックしたときにEF 6.x DbContext Generatorテンプレートが表示されるようになります。

13
dean oliver