我使用lambda表达式来查询数据,每当我调试和查看内存时,内存连续增加。它可以使异常“System.OutOfMemoryException”。如何在完成执行lambda表达式时清除缓存内存?
public override IQueryable<TableA> GetList(Func<TableA, bool> conditon, bool isNoTracking = false)
{
var result = Context.TableA
.Join(Context.TableB.AsNoTracking(), x => x.TYU_URICOMCODE, y => y.MACS_KOKYAKU_CODE, CreateOrder)
.Where(conditon).AsQueryable();
return result;
}
答案 0 :(得分:1)
我有一些怀疑:
CreateOrder
副作用正在做一些耗尽内存的事情。请记住,每行都会返回。.Where()
返回一个WhereIterator
,它已经是可查询的,因此不需要构建新的可查询,并且还将进行内存分配。如果你不得不打电话给.AsQueryable()
进行编译,那么你几乎肯定会对上面的猜疑#2犯规。