linqからsqlでノーザパンドヒントを使用するにはどうすればよいですか?
-
01-10-2019 - |
質問
合理的に実行するために、NOEXPANDヒントを指定する必要があるというインデックス付きビューがあります。残念ながら、LinqをSQLに生成したT-SQLクエリをNolockのヒントから変更することに関して見られるように、これらのヒントを直接利用する簡単な方法はないか、そこにあるように見えますか?
私の考えは、属性を使用して、またはDBMLを通じて宣言的にこのもののカスタマイズを許可することは理にかなっているということです。また、LinqからSQLはSQL Serverをターゲットにしているように動作するように見えるため、これらの高度な機能を活用できることだけが理にかなっています(存在する場合)。実装に関係なく、この問題を解決する創造的な方法に興味があります。
解決
私は動作しているように見える回避策を見つけましたが、各SQLビューに2番目のビューを作成する必要があります。 2番目のビューでは、元のビューからすべてのフィールドを選択し、ノーエクサスパンドヒントをタックするだけです。 NOEXPANDヒントを使用する必要があるLINQからSQLクエリは、オリジナルをラップするビューをターゲットにすることができます。
詳細はにあります このMSDN投稿.
依存ビューを作成する際に考慮すべき1つの欠点は、作成スクリプトを適切な依存順序で必ず適用する必要があるということです。
誰かがより良い選択肢を持っていますか?この必要なオプティマイザーのヒントの使用をサポートするためだけに、追加のSQLビューを作成する必要はありません。
他のヒント
私は完全に同意しますが、そのような方法があるとは思いません。 EF4では、を使用できます ExecuteStoreCommand
これにより、SQLを直接実行できます。パフォーマンスが受け入れられない場合、それはあなたの唯一の選択肢かもしれません。
== edit ==
これをlinqでSQLからSQLに行うこともできます ExecuteQuery
方法。