Entity Framework Plus - FutureValue () en un bucle foreach

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

Pregunta

Recientemente comencé a usar EF + en nuestro proyecto con gran éxito, sin embargo, a veces me encuentro con un problema en el que tengo un conjunto de entidades para las que necesito ejecutar una consulta por separado.

Entonces, si tengo un conjunto de 20 clientes, necesito ejecutar 20 consultas por separado. Me pregunto si hay alguna manera de evitar esto usando EF + FutureValue () de alguna manera en un bucle foreach.

Vea este código de ejemplo:

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

Respuesta aceptada

Primero debe generar todas las consultas de "QueryFuture" y luego puede usarlas.

Así que dos bucles deberían hacer que funcione.

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


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué