Entity framework ToDictionary抛出OutOfMemoryException
我正在尝试创建一个包含329734个元素的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 应该有足够的内存来创建这两个整数的字典。这里发生了什么,我如何避免它?返回整个对象,即使只使用了两个字段。因为对象中有许多属性,所以运行时的可用内存不足 这可以通过使用投影来避
字典。当我尝试创建一个内存中的字典,将唯一的整数列映射到整数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);
即使没有耗尽内存,使用投影也更有效