6

このシナリオを考えてみましょう。

特定の呼び出しを行うことができるリポジトリがあります。これらの呼び出しは LINQ を使用するため、返されるデータ量の点で比較的コストがかかる可能性があります。

私の場合、データが古い場合でもそれほど悪くはありません。キャッシュを実装して、大規模で高価なクエリがすべての呼び出しで実行されないようにすることができます。キャッシング ポリシーを実装して、時間や使用状況に基づいてそのクエリをいつ再実行するかを決定することもできます。

私が理解しようとしているのは、それをキャッシュに入れる方法です。1 つの方法は、単純に次のように言うことです。

"querytype1" = Particular LINQ expression
"querytype2" = Particular LINQ expression

次に、単純な文字列でキャッシュにキーを設定します。しかし、LINQ を実行していることを考えると、LINQ 式自体によってキャッシュのキーを設定できる可能性があるでしょうか? パフォーマンスの指標は理解していますが、2 つの LINQ 式が同じかどうかを比較する方法はありますか?

4

2 に答える 2

1

戦略: SQL 出力を比較する

1 つの戦略は、レンダリングされた SQL テキスト + パラメータを取得し、別の IQueryable からレンダリングされた SQL + パラメータと同じかどうかを判断することです。

詳細については、「 LINQ to SQL ステートメント (IQueryable) WITH パラメーターを取得する」を参照してください。

于 2013-04-18T20:17:58.723 に答える