实体框架增强-foreach循环中的Future

问题描述

我的问题与Entity Framework Plus - FutureValue() in a foreach loop非常相似。

我有代码

public class CustomerService
{
    private readonly EntityContext Context = new EntityContext();
    
    private IQueryable<Customer> MakeQuery(object query)
    {
        return this.Context.Customers
            // Omitted more logic here to create a complex query.
            .AsQueryable();
    }

    public List<List<Customer>> GetCustomersBulk(List<object> queries)
    {
        var response = new List<List<Customer>>();
        var futureQueries = new List<QueryFutureEnumerable<Customer>>();

        foreach (var query in queries)
        {
            futureQueries.Add(
                this.MakeQuery(query: query)
                    .Future()
            );
        }
                                                
        foreach (var futureQuery in futureQueries)
        {
            response.Add(futureQuery.ToList());
        }

        return response;
    }
}

完全工作的小提琴:https://dotnetfiddle.net/vg8pjA

但是,使用Futures似乎比不使用它们要慢。

如果我尝试使用相关问题中的the answer,就像使用FutureValue一样,我的查询将仅返回1个Customer,而不返回其中的许多。我认为使用该代码查询可以在一次数据库旅行中运行,但是结果不是我想要的。

我尝试使用.FutureValue<IEnumerable<Customer>>(),但随后出现此错误

Error   CS1929  'IQueryable<Customer>' does not contain a deFinition for 'FutureValue' and the best extension method overload 'QueryFutureExtensions.FutureValue<IEnumerable<Customer>>(IQueryable<IEnumerable<Customer>>)' requires a receiver of type 'IQueryable<IEnumerable<Customer>>'

请注意,我正在使用Z.EntityFramework.Plus.EFCore版的2.0.60

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)