問題の範囲:私が知り、信頼するデータアクセスブロックEnterprise Libraryの速度と信頼性にトレードオフをかけずにEF4.1を使用したいと考えています。エンティティフレームワーク4.1対エンタープライズデータアプリケーションブロック最大パフォーマンス
EFパフォーマンスチューニングについての多くのStackoverflowリンクとブログのおかげで、ADO/Enterprise Libデータアクセスブロック(SqlDataReader)のパフォーマンスに一致するEF4.1を使用する方法が多く投稿されています。
プロジェクト: 1.エンティティ/ダイナミックSQLにlinqはありません。私はlinqが大好きです、私はオブジェクトに対して主にそれを使用しようとします。 2. 100%のストアドプロシージャとトラッキングなし、マージなし、そして最も重要なのは、.SaveChanges()を決して呼び出さないことです。私はちょうど挿入/更新/削除proc DbContext.StoredProcName(params)を呼び出します。この時点で、EFのいくつかの迅速な開発要素が削除されましたが、ストアドプロシージャの複雑な型を自動的に作成する方法で十分です。
GetStringメソッドと同様の方法だけで期待の種類を通過し、型にDataReaderをキャストAbstractMapperあります。
だから、これは私に関する限りビートに目印です。私が知っているより遅いものを採用するのは難しいでしょう。
遅い
!ずっと遅い!より多くのそれのようである
!! 私の結果によると、パフォーマンスパイはトラッキングオーバーヘッドを1%以上増加させるはずです 私はビューをあらかじめコンパイルしようとしましたが、トラッキングなしのブーストは得られませんでした!なぜ??たぶん誰かがそれにチャイムできる。
これはEnterprise Libと比較するのが面倒ではありませんが、IISアプリケーションプールごとに一度読み込まれるメタデータを読み込むために、データベースに時間切れの呼び出しを1つ作成しています。本質的にあなたのアプリの生活の中で一度。
私は自動ストアドプロシージャの作成とEFをこのようを使用していると私は、これらすべてのEDMX機能ノードは、エンティティまでマッピングするために自動インポートにEdmxへのLINQを使用。次に、各エンティティとエンジンのリポジトリを自動生成します。
私は決してSaveChangesを呼び出すことはないので、デザイナーに保存されたprocsにマップする時間はかかりません。時間がかかり過ぎて、簡単にそれを壊して、それを知らない方法です。だから私は文脈からprocsを呼び出す。
これを私の新しいミッションクリティカルな医療機器配信Webアプリケーションに実際に実装する前に、私は観察と批評を感謝します。
ありがとうございます!
私は今、数ヶ月のためにこれを使用していると、それは偉大な作業が、1つの事のためです。 EFはソースコントロールでも、マージフレンドリでもありません。 EFについてのフェンスがあれば、パフォーマンスは重要な問題ではないと信じています.EFは.edmx全体を更新し、.edmxファイルにダイアグラムxyの場所を保存します。同じ変更されていないXMLノードが2つの異なる開発者から数千の行を離れていることに気づいた。コードスミスはこの問題をPlinqOで解決し、MSもそうするべきです。 – TheDev6