2

.Net 4.0 の一部である Entity Framework 4.0 を使用して構築された ASP.Net アプリケーションがあります。新機能と、最も重要な 4.1、4.2、および 4.3 によって生成されたよりクリーンな SQL に関する多くの記事を読んだ後、この機会にアプリケーションをアップグレードして 4.3.1 を使用することにしました。

NuGet を使用して 4.3.1 をアプリケーションにインストールしたところ、EntityFramework.dll のインストールに成功しました。それへの参照を追加し、ビルドすると bin フォルダーに追加されます。実行時には、すべてが正常に実行されますが、SQL プロファイラーを調べて Hibernatine Rhinos の Entity Framework Profiler を使用すると、SQL は同じように見えます。

NuGet が行ったことは参照を追加することだけだったので、実行時にアプリケーションが 4.3.1 を使用するように強制するために何か他のことをする必要があると思いますが、何をしなければならないかを見つけることができません。

実行中のクエリで SQL が同一である可能性が高く、生成された SQL を見るだけでは違いが見られない可能性があることを理解していますが、実行時に新しいバージョンが実際に使用されていることを確認できるようにしたいと考えています。

4.3.1 が確実に使用されるようにするために、web.config に何か他のものを追加する必要がありますか? System.Data.Entity などを標準の .Net4.0 ライブラリではなく、新しい EntityFramework.dll から取得するには、どこかを変更する必要があります。

感謝して受け取った助け。ステ

4

2 に答える 2

6

これは、meetjaydeep の答えをステップで繰り返したものです。彼と、私がこの情報の大部分を入手したdpblogのおかげです。

こちらの説明に従って EF 4.3.1 をインストールします。

EF 4.3.1
のインストール アップグレードを行う前に、これにより一時的にコードが壊れることに注意してください。そのため、続行する前にバックアップを行うことをお勧めします。

  1. NuGet がまだインストールされていない場合は、インストールします。
  2. NuGet パッケージ マネージャー コンソールを開きます (VS2010 メニュー バー > [ツール] > [ライブラリ パッケージ マネージャー])。
  3. ロードが完了したら、次のコマンドを実行して、Enter キーを押す前にドロップダウンから正しいプロジェクトを選択してください: Install-Package EntityFramework -Version 4.3.1

ここで説明されているように、EF 4.0 を EF 4.3.1 にアップグレードします(手順 4 にスキップします)。

EF 4.0 から EF 4.3.1 へのアップグレード EF 4.3.1
をインストールしたからといって、完全に完了したわけではありません。あなたがしたことは、新しいテンプレートを使用するオプションを自分自身に与えることです (これを自分で行った後に見たものから)。これらの新しいテンプレートを使用するときが来ました。

  1. EDMX デザイン ビューを開きます。
  2. デザイン面では。右クリック > コード生成項目を追加
  3. 左メニューから「オンラインテンプレート」を選択
  4. 「DbContext」を検索
  5. リストから「EF 4.x DbContext Generator」を選択します
  6. このアイテムには、EDMX の名前とは異なる名前を付けてください。「_____Model.tt」(空欄に記入)。___DBCModel.tt を使用しました - 例: FooDBCModel.tt
  7. [追加] をクリックします</li>
  8. たとえば、FooDBCModel.tt と FooDBCModel.Context.tt の 2 つのファイルが作成されていることを確認します。

わずかに壊れたコードを修正する
コードはコンパイルされません。絶望しないでください。これは、System.Data.Objects.ObjectContext を新しく改良された (とにかく私にとっては) System.Data に交換したためです。 Entity.DbContext (やあああああ...)

  • すべての CUD (作成、更新、削除) メソッドを更新する必要があります。
  • context.AddToEntityNameHere(...) を使用する代わりに、context.EntityNameHere.Add(...) を使用します。
  • 例: context.AddToProducts(製品) > context.Products.Add(製品)
  • Database プロパティにアクセスできるようになりました
  • Entry(...) メソッドにアクセスできるようになりました。
  • 更新中に更新するプロパティを明示的に指定できるようになりました (context.SaveChanges())。興味がある?ここを見てください。

私の意見では、余分な作業をするだけの価値があります。EF 4.0 は制限が多すぎました。EF 4.3.1 はより柔軟で、提供された構文糖衣が気に入っています。EF 5.0 はさらに優れていると確信していますが、今すぐ飛躍することはできません。

楽しみ。

于 2012-10-19T17:58:33.363 に答える
2

EF4.3.1 を利用できるようにするには、まず EF4.1 update1 をインストールし、最新の NuGet を使用する必要があります。

EF4.0 はデータベース ファーストまたはモデル ファーストです。EF4.3 にアップグレードする場合、最も簡単な方法は "コード ジェネレーター" を使用することです: http://blogs.msdn.com/b/adonet/archive/2011/09/ 28/ef-4-2-model-amp-database-first-walkthrough.aspx

于 2012-05-24T11:42:22.977 に答える