Entity Framework Plus - FutureValue () in un ciclo foreach

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

Domanda

Recentemente ho iniziato a utilizzare EF + sul nostro progetto con grande successo, ma a volte mi imbatto in un problema che ho un insieme di entità per le quali ho bisogno di eseguire una query separata.

Quindi se ho un set di 20 clienti ho bisogno di eseguire 20 query separatamente. Mi chiedo se esiste un modo per evitare ciò usando EF + FutureValue () in qualche modo in un ciclo foreach.

Vedi questo codice di esempio:

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

Risposta accettata

È necessario prima generare tutte le query "QueryFuture", quindi è possibile utilizzarle.

Quindi due loop dovrebbero farlo funzionare.

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



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché