我已经在我的项目中从 .net5 更新到 .net6 预览版,但我遇到了 Entity Framework Core 的问题。
这些查询在 EF Core 5 中运行良好,但是,它们迫使我.AsEnumerable()
在 EF Core 6 中工作,它使用的内存是以前使用的两倍。看起来应该可以做到(特别是因为它在 EF Core 5 中运行良好),也许我应该配置一些不同的东西来进行这些查询?
var _data1 = _dbContext.Dataset1
.Where(f => f.PostedDate >= DateSince && f.PostedDate <= DateUntil)
.AsEnumerable();
var _orders = _dbContext.Orders
.Where(o => _data1.Select(f => f.OrderID).Contains(o.OrderID))
.AsEnumerable();
var _itms = _dbContext.Items
.Where(i => _orders.Select(o => o.OrderID).Contains(i.OrderId))
.AsEnumerable();
foreach(var order in _orders )
{
var itms = _itms?.Where(i => i.OrderId == order.OrderID);
//...
}
更新: 这是在没有 .AsEnumerable() 的情况下引发的异常
LINQ 表达式 'DbSet() .Where(o => DbSet() .Where(f => f.PostedDate >= __DateSince_0 && f.PostedDate <= __DateUntil_1) .Select(f => f.OrderID) .Contains(o .OrderID))' 无法翻译。
以可翻译的形式重写查询,或通过插入对“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的调用显式切换到客户端评估。有关详细信息,请参阅 https://go.microsoft.com/fwlink/?linkid=2101038。