12

プロジェクトを EF 4.3.1 から EF 6.0 にアップグレードしようとしています

テンプレートが使用ObjectContextし、テンプレートを変更するたびに、*.Designer.cs ファイル内の生成されたコードが古い EF 4.3.1 名前空間で上書きされるため、ビルドが中断されます。

これが起こらないようにする方法はありますか? ハッキングする *.tt ファイルが表示されません。EDMX の再生成は、概念モデルに大幅なカスタマイズが加えられているため、実際にはオプションではありません (私なら何日もかかるでしょう!)。

テストとして新しい EDMX を作成しようとしましたが、同じ問題が発生します。使用のためにコード生成を「デフォルト」に変更するとすぐにObjectContext、EDMXName.Designer.cs ファイルが古い名前空間を使用して書き込まれます。

using System;
using System.ComponentModel;
using System.Data.EntityClient;
using System.Data.Objects;
using System.Data.Objects.DataClasses;
using System.Linq;
using System.Runtime.Serialization;
using System.Xml.Serialization;

これは私を気を散らしています-私はそれをEF 5.0にハックする必要があると思います

4

1 に答える 1

23

私は問題を解決しました。これは、EF 5.X から EF 6.X にアップグレードしたため、edmx がまだ古いレガシー生成戦略にあるためです。

何が必要:

これらの拡張機能の 1 つをインストールした後、edmx ファイルとデザイナー ファイルをバックアップする (またはソース管理を使用する) 必要があります。Visual Studio を再起動します。

Visual Studio を再起動した後、プロジェクトに移動し、次のことを行います。

  1. ダイアグラム デザイン サーフェイスに入る
  2. 右クリックして「コード生成項目の追加」を選択
  3. 「EF 6.X Entity Object Generator」を選択し、「Template.tt」などの適切な名前を付けます
  4. 世代を起こそう
  5. デザイン画面に戻り、コード生成戦略が現在T4
  6. 古いレガシー EF 5.X によって作成されたデザイナー ファイルを削除します。

これにより、ObjectContext派生コンテキストだけでなく、新しい EF 6.0 名前空間に一致するすべてのものも得られます。

于 2013-11-19T02:56:48.313 に答える