私のアプリケーションは、EF 4で最初にEDMXデータベースを使用しています。EF6にすべてをアップグレードしたいと思います。 EF 6で変更されました。その後、EDMXによって生成されたコードも間違ったネームスペースなどを使用していることに気付きました。これまでのところ、カスタムT4を使用していません。
既存のEDMXをEF 6にアップグレードするにはどうすればよいですか。
ありがとうございました。
ここでRand RandomとDean Oliverが出した回答に加えて、次の MSDN link に言及して、EF6にアップグレードするための一般的な手順を説明します。必要な手動手順を過小評価しないでください...
ロードマップは次のとおりです(上記のリンクの詳細を参照)。
Preparation:をインストールします Entity Framework 6 Tools for Visual Studio 2012/13
EF6 NuGetパッケージをインストールします
System.Data.Entity.dllへのAssembly referencesが削除されていることを確認します(注:EF6 NuGetパッケージをインストールすると、プロジェクトからSystem.Data.Entityへの参照が自動的に削除されます)。
EF Designer(EDMX)モデルをuse EF 6.xコード生成に交換します。
注:
ObjectContext
を使用している場合、テンプレートのダウンロードを検討する必要があります "EF 6.x EntityObject Generator" 。次に、モデルデザイナーで右クリックし、[コード生成アイテムを追加]を選択して、まだ使用していない名前を選択します。適切なクラスを生成します。その後、すべての古い( "*.tt
")ファイルと関連する生成されたクラス( "*.cs
")ファイルを削除する必要があります。更新された名前空間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
。DbGeography
、DbGeometry
)は、System.Data.Spatial
=> System.Data.Entity.Spatial
N.B.:
available EF templatesについての詳細は、こちらをご覧ください こちらMSDN
EF6.xへのアップグレード後にobsolete属性warningが表示される場合は、これをチェックしてくださいSOの記事: 廃止されたものを取り除く方法属性警告?
ランダムランダムが提案した手順と同様に。 VS2012を使用している場合は、Visual Studio 2012用のEntity Framework 6ツールを忘れずにインストールしてください。 ここからダウンロード
これにより、[ステップ4:コード生成アイテムの追加]をクリックしたときにEF 6.x DbContext Generatorテンプレートが表示されるようになります。