1

LINQ を使用してデータベースからデータを取得し、後でそのデータを取得して新しい LINQ コマンドの実行を開始した場合、DB に戻りますか? それとも記憶の中でやりますか?データの読み取りについてのみ話します。

だから私がこれを行うと:

var tabledata = dbContext.Table1.Where(u => u.isActive);
int count = tabledata.Count();

その後、特定の値をすばやく取得したいので、次のようにします。

string username = tabledata.Where(u => u.ID == 1).Select(u => u.Username).Single();

もう一度DBにアクセスしましたか?それとも、メモリ内のキャッシュされたテーブルのコピーに対して選択を実行しましたか?

編集:OK、何度も編集した後、私が取得しようとしているのは、DB に正常にヒットして IQueryable を返したと仮定すると、そのオブジェクトに対する後続のクエリは DB にヒットするか、メモリにとどまりますか?

4

2 に答える 2

3
var tabledata = dbContext.Table1.Where(u => u.isActive);
int count = tabledata.Count();

を呼び出すと実行されますCount()

string username = tabledata.Where(u => u.ID == 1)
                           .Select(u => u.Username)
                           .Single();

を呼び出すと実行されますSingle()

2 番目の呼び出しがメモリにキャッシュされるかどうかは、キャッシュ ソリューションを設定するかどうかによって異なります。すぐに使用できる Linq to SQL または EF では、データベースに対して 2 つの呼び出しが行われます。

于 2013-06-03T21:22:03.660 に答える