IMPORTANT: MAJOR BREAKING CHANGE COMING SOON

Entity Framework Plus - FutureValue () dans une boucle foreach

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

Question

Récemment, j'ai commencé à utiliser EF + sur notre projet avec beaucoup de succès. Cependant, parfois, je suis confronté à un problème selon lequel j'ai un ensemble d'entités pour lequel je dois exécuter une requête séparée.

Donc, si j'ai un ensemble de 20 clients, je dois exécuter 20 requêtes séparément. Je me demande s'il existe un moyen d'éviter cela en utilisant EF + FutureValue () d'une manière ou d'une autre dans une boucle foreach.

Voir cet exemple de code:

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

Réponse acceptée

Vous devez d’abord générer toutes les requêtes "QueryFuture" pour pouvoir les utiliser.

Donc, deux boucles devraient fonctionner.

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

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi