最近私は自分のプロジェクトでEF +を使い始めましたが、時々私は別のクエリを実行する必要があるエンティティのセットがあるという問題に出くわします。
したがって、20人の顧客がいる場合、20個のクエリを別々に実行する必要があります。どういうわけかforeachループの中でEF + FutureValue()を使ってこれを回避する方法があるのだろうか。
このサンプルコードを参照してください。
foreach (var customer in customers)
{
customer.SomeValue = ctx.SomeDatabaseTable.Where(myCondition).FutureValue();
// this would run 20 times ... any way how to run all of the 20 queries at once?
}
最初にすべての "QueryFuture"クエリを生成してから使用する必要があります。
それで2つのループはそれを働かせるべきです。
var futureQueries = new List<BaseQueryFuture>();
// create all query futures
for(int i = 0; i < customers.Length; i++)
{
futureQueries.Add(ctx.SomeDatabaseTable.Where(myCondition).FutureValue());
}
// assign result (the first solved will make the call to the DB)
for(int i = 0; i < customers.Length; i++)
{
customer.SomeValue = ((QueryFutureValue<SomeValueType>)futureQueries[i]).Value;
}