IMPORTANT: MAJOR BREAKING CHANGE COMING SOON

實體框架加 - 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;
}


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因