2009-06-25 6 views
2

エンティティ・フレームワーク・プロバイダ(CoreLabs/Mysql/devart)が、遅いクエリを作成しています。エンティティフレームワークプロバイダが実行する実際のSQLを設定することはできますか?

実際に実行されるSQLクエリを設定することは可能でしょうか?

おかげ

+0

良い質問:Entity Framework内でストアドプロシージャを使用しましたが、それはSQL Serverにあります。 – Merritt

+0

私はmysqlプロバイダでも動作するストアドプロシージャを持っていますが、私のエンティティのナビゲーションプロパティには値が設定されません。 – user48545

+0

私はOracle用のdevartを評価したいと思います。どのような遅いクエリを経験したか分かち合うことができます。それは非効率的だった/悪いSQLは、devartによって生成された? – softveda

答えて

1

その面白い、私はちょうどLINQPad - New Features for Entity Frameworkを見ていた。ウェブキャストの途中で、彼はEFによって生成されたスクリプトとLinq-To-Sqlによって生成された同じクエリを示しました。 linq-to-sqlで生成されたスクリプトは効率的でした。今私はlinq-to-SQLを使用してあなたのオプションが、私はあなたが知っておくべきだと思ったかどうかわからない

あなたの質問に関しては、私はEFとLinq-to-SQLプログラマーは文字列にTSQLを書くのを避け、EFとLinq-to-SQLの目的を捨てるような独自のSQLコマンドを送る必要はありませんか?

0

はい、一つの方法は、ObjectQuery.ToTraceString APIです。

+0

私が理解している限り、著者は特定のオブジェクトクエリに対して実行するSQLクエリをどのように置き換えるべきかを質問しますが、基礎となるSQLの読み方は問いません。 –

+0

申し訳ありませんが、 "参照してください"と誤解されています。はい、EF v1の場合、ストアドプロシージャを使用して任意のSQLを実行できます。参照:http://msdn.microsoft.com/en-us/library/bb399203.aspx –

関連する問題