C# EF的内存消耗

C# EF的内存消耗,c#,.net,entity-framework,.net-3.5,C#,.net,Entity Framework,.net 3.5,早上好 实际上,我正在玩EF atm,我需要你们的帮助: 下面的场景:我有一个包含大量数据的表。如果我通过EF查询这个表,所有记录都会加载到内存中 例如 因此,我浏览了MySpecialTable的所有记录,并对计数器进行计数。 当我查看Taskmanager或其他任何显示应用程序内存消耗的内容时,它告诉我:400Mb。(由于数据原因) 如果我再运行一次该表,内存消耗将增加一倍 我已经试着给GC打电话了,但没用 为什么每次运行的所有记录都存储在内存中的某个位置(并且没有被释放)? 它们存放在哪里

早上好

实际上,我正在玩EF atm,我需要你们的帮助:
下面的场景:我有一个包含大量数据的表。如果我通过EF查询这个表,所有记录都会加载到内存中

例如

因此,我浏览了MySpecialTable的所有记录,并对计数器进行计数。 当我查看Taskmanager或其他任何显示应用程序内存消耗的内容时,它告诉我:400Mb。(由于数据原因)
如果我再运行一次该表,内存消耗将增加一倍

我已经试着给GC打电话了,但没用

为什么每次运行的所有记录都存储在内存中的某个位置(并且没有被释放)? 它们存放在哪里? 有没有办法让EF查询像DataReader一样工作? 或者还有其他像EF一样优雅的ORM吗

编辑:

不,我不会那样数数的。。。这只是为了显示迭代:)

首先,我希望你没有真的进行这样的计数;计数法要有效得多。但假设这只是演示代码来显示内存问题:

。这会告诉实体框架您无意修改实体,因此它不需要跟踪它们的原始状态

var counter = default(int);
using (var myEntities = new MyEntities())
{
    foreach (var record in myEntities.MySpecialTable)
    {
        counter++;
    }
}