Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework ToDictionary抛出OutOfMemoryException_Entity Framework_Entity Framework 6 - Fatal编程技术网

Entity framework ToDictionary抛出OutOfMemoryException

Entity framework ToDictionary抛出OutOfMemoryException,entity-framework,entity-framework-6,Entity Framework,Entity Framework 6,我正在尝试创建一个包含329734个元素的字典。当我尝试创建一个内存中的字典,将唯一的整数列映射到整数Id时,代码 var dict = ctx.MyEntity.ToDictionary(e => e.SomethingUnique, e => e.Id); 投掷 OutOfMemoryException 应该有足够的内存来创建这两个整数的字典。这里发生了什么,我如何避免它?返回整个对象,即使只使用了两个字段。因为对象中有许多属性,所以运行时的可用内存不足 这可以通过使用投影来避

我正在尝试创建一个包含329734个元素的
字典。当我尝试创建一个内存中的字典,将唯一的整数列映射到整数Id时,代码

var dict = ctx.MyEntity.ToDictionary(e => e.SomethingUnique, e => e.Id);
投掷

OutOfMemoryException


应该有足够的内存来创建这两个整数的字典。这里发生了什么,我如何避免它?

返回整个对象,即使只使用了两个字段。因为对象中有许多属性,所以运行时的可用内存不足

这可以通过使用投影来避免

var dict = ctx.MyEntity
              .Select(e => new { SomethingUnique = e.SomethingUnique,
                                 Id = e.Id })
              .ToDictionary(e => e.SomethingUnique, e => e.Id);

即使没有耗尽内存,使用投影也更有效。

返回整个对象,即使只使用了两个字段。因为对象中有许多属性,所以运行时的可用内存不足

这可以通过使用投影来避免

var dict = ctx.MyEntity
              .Select(e => new { SomethingUnique = e.SomethingUnique,
                                 Id = e.Id })
              .ToDictionary(e => e.SomethingUnique, e => e.Id);
即使没有耗尽内存,使用投影也更有效