web-dev-qa-db-ja.com

EntityFramework VS純粋なAdo.Net

EFは非常に広く使用されているスタッフですが、私はそれをどのように使用すべきかわかりません。さまざまなアプローチのさまざまなプロジェクトで、efで多くの問題に遭遇しました。それで、いくつかの質問が頭に浮かびました。そして答えは、ストアドプロシージャで純粋なado.netを使用することにつながります。質問は次のとおりです。

  1. N層アプリケーションでEFを処理する方法は?たとえば、EFを使用したDALがあります。 EFの抽象化の一種として、リポジトリ、作業単位パターンを使用した多くの記事やプロジェクトを見ました。このようなアプローチは、開発速度を向上させるほとんどの利点を無効にし、いくつかのことにつながります。
    • eFロードの再マッピングにより、パフォーマンスを低下させるDTOが発生するいくつかのDTOに)。 DTOへの正確な再マッピングは、efsの最大のメリットの1つを殺します。
      または
    • eF(およびversion)とアプリとの間に強い結合をもたらします。それは、bllを使用したdalとプレゼンテーションを含む2層アプリ、またはbllとプレゼンテーションを使用したdalのようなものになります。ベストプラクティスではないと思います。また、マッピング以外は以前のものと同じロードプロセスなので、パフォーマンスの問題が発生しました。 EFを抽象化せずにDALとして使用することもできます。しかし、他の方法でも同様の問題が発生します。
  2. App\thread\atomic操作ごとに1つのコンテキストを使用する必要がありますか?アプローチを使用する-アプリ\スレッドごとに1つのコンテキストはパフォーマンスとナビゲーションプロパティを呼び出す可能性をわずかに向上させる可能性がありますが、別の問題に直面します-このコンテキストを更新し、コンテキストでロードされたデータを増やします糸。操作ごとにコンテキストを使用すると、efの結果をDTOに再マッピングできます。そのため、質問1に戻ったことがわかります。

  3. EF + SPのみを使用することはできますか?繰り返しますが、以前の質問からの問題があります。機能の大部分が使用されない場合、efを使用する理由は何ですか?

ですから、はい、EFはプロジェクトを開始するのに最適です。画面がほとんどなく、操作が少ない場合に便利です。しかし、次は何ですか?

このテキストはすべて分類されていない考えです。私は純粋なado.netが別の種類の課題につながることを知っています。だから、このトピックについてのあなたの意見は何ですか?

30
Crossman

命名規則に従うことで、それが呼び出されることがわかります:ADO.NET Entity Framework、つまりEntity FrameworkはADO.NETの上にあるため、高速化できません。両方を同じ時間で実行できますが、 EFは以下を提供します。

  • あなたが書いているものがコンパイルするかどうかについての手がかりなしでクエリを書くことでもう立ち往生することはありません。
  • モデルクラス内でターゲットユーザーから直接受け入れたい独自のデータ制約を記述する際に、C#またはお気に入りの.NET言語に依存するようになります。

最後に:EFとLINQは、後でアプリケーションを保守する際に大きな力を発揮します。

Entity Frameworkには3つの異なるモデルがあります。ModelFirst、Database First、およびCode Firstは、それらのそれぞれを知っています。

-再マッピングがプロセス上にある場合のパフォーマンスの低下についてのポイントは、最初の実行時に、EFがメタデータをメモリにロードし、edmxファイルからモデルのメモリ内表現を構築するのに時間がかかるためです。

20
user2245758

ADO。 Netは、データベースシステム(SQL、Oracleなど)と対話できるオブジェクト指向のフレームワークです。エンティティフレームワークは、(クエリのコレクション(不活性なテーブル名、select * from this))などのデータベース内のデータを操作する手法です。 LINQで使用します。

0
Zeeshan Haider