实体框架加 - Foreach循环中的FutureValue()

entity-framework entity-framework-6 entity-framework-plus

最近我开始在我们的项目上使用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”查询,然后才能使用它们。

所以两个循环应该使它工作。

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;
}


许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因