Entity Framework Plus - FutureValue () в цикле foreach

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

Вопрос

Недавно я с большим успехом начал использовать EF + в нашем проекте, однако иногда я сталкиваюсь с проблемой, когда у меня есть набор сущностей, для которых мне нужно выполнить отдельный запрос.

Поэтому, если у меня есть набор из 20 клиентов, мне нужно выполнить 20 запросов отдельно. Интересно, есть ли способ избежать этого, используя EF + FutureValue () как-то в цикле foreach.

Посмотрите этот пример кода:

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
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему