【发布时间】:2014-09-05 04:46:06
【问题描述】:
这可能是一个简单或快速提出的问题。
在我的 EF 应用程序中出现异常。
System.OutOfMemoryException:类型异常 'System.OutOfMemoryException' 被抛出。
我正在尝试根据 idList (int) 从 Log 表中检索记录。 Logs 表有数百万条记录。如何修复这个异常或者如何优化代码来解决这个问题?
var resultList = idList.Join(clientEntities.Logs,
x => x,
s => s.ID,
(x, s) => s)
foreach (var r in resultList)
{
...
}
执行循环时抛出异常。
【问题讨论】:
-
OutOfMemory异常非常难以调试,尤其是当我们看不到正在使用的其他代码时。foreach内部发生了什么? -
您可以选择使用分页吗?
-
@MatthewHaugen- 它甚至没有进入 foreach。
-
我认为正确的建议是在这里使用分页。每次调用将查询限制为 N(即 1000)行。您是否在查询的 and 处调用 ToList()?
-
不能保证防止内存异常,但确实可以提高性能,试试
clientEntities.Logs.AsNoTracking()
标签: c# entity-framework