【发布时间】:2010-10-27 05:43:42
【问题描述】:
早上好!
实际上,我正在玩一些 EF atm,我需要你们的帮助:
以下场景:我有一张表,里面有很多数据。如果我通过 EF 查询此表,所有记录都会加载到内存中。
例如。
var counter = default(int);
using (var myEntities = new MyEntities())
{
foreach (var record in myEntities.MySpecialTable)
{
counter++;
}
}
所以,我遍历了 MySpecialTable 的所有记录并计数了counter。
当我查看任务管理器或任何其他显示我的应用程序内存消耗的东西时,它告诉我:400Mb。 (因为数据)
如果我再跑一遍表,内存消耗会增加一倍。
我已经尝试调用 GC,但它不起作用。
为什么每次运行的所有记录都存储在内存中的某个位置(并且没有被释放)? 它们存储在哪里? 有没有办法让 EF 查询表现得像 DataReader? 或者还有其他像EF一样优雅的ORM吗?
编辑:
不,我没有做那样的计数......这只是为了显示迭代:)
【问题讨论】:
标签: c# .net entity-framework .net-3.5