2011-10-19 5 views
0

LINQ to SQLとEntity FrameworkのようなORMの人気が高まるにつれ、ネイティブクエリとストアドプロシージャを使用することに疑問を呈します。ネイティブクエリとストアドプロシージャとORM

私は自然にSQLとRDBMSとの直接接触を目的としています。私は何が起こるかについての純粋なコントロールを楽しんでいます。私は、コード(ストアドプロシージャなど)で呼び出しているものを正確に示すトレースが好きです。

しかし、私が見逃しているORMの利点は何ですか?それは単なる急速な開発プロセスですか?データベースとオブジェクトを管理する必要性の欠如?

EFとLINQ to SQLを使用しないことで何が欠けていますか?

+0

[コードジェネレータとORMとストアドプロシージャとの比較](0120-18756)コード番号: – Omar

答えて

1

ここで最も大きな影響は生産性です。シンプルなCRUDインターフェイスを構築するためにEF(または他のORM)を使用するのは本当に簡単です。しかし、問題は、それが起こっていることを十分に理解していないときに起こります。

たとえば、いくつかのサブコレクションを持つ大きなオブジェクトを考えてみましょう。 ORMには、そのデータがどのように統合されているかを理解するのに限界があり、そのオブジェクトを実現するために非正規化されたデータを返す必要があります。それはデータ転送に大きな影響を与える可能性があります。

もう1つはパフォーマンスです。たぶん、あなたは多くの計算を行うべきか、大きなオブジェクトとその依存関係を更新すべきユーザインタフェースを得るでしょう。この場合、ネイティブアクセス(ストアドプロシージャなど)を使用してRDBMSの可能性を最大限に引き出すことをお勧めします。

要約:単純なインターフェイス、ORM。中〜複雑なインタフェース、ストアドプロシージャ

+0

私はあなたの答えが好きです。私のネイティブSQLの方法がすべての領域で十分であることを知っていると、私は快適になります。私が小規模なプロジェクトで諺の輪を再発明しても、直接的なコントロールによって安心できます。 –

+0

これは私のアプローチです。私のアプリケーション上のすべてのシンプルなUIに対して、純粋なEFオブジェクトを使用し、n-n関係、レポートおよびその他の複雑なインターフェイスでは、ストアドプロシージャを使用して、最終的に多くのデータとハードコアのパフォーマンス/ –

関連する問題