Csharp/C#教程:entity .ToList()生成一个System.OutOfMemoryException分享


entity .ToList()生成一个System.OutOfMemoryException

我有一张五十万行的表。 我需要更新每一行,但ToList()失败:

List allContacts = objDatabase.Contacts.ToList(); 

我每次都得到一个System.OutOfMemoryException。 有没有解决的办法?

我已经有了App.Config的解决方法,但仍然没有去:

  

我是64位机器,内存为8GB

这是一个使用分块的解决方案。 它会在每个块之后处理容器(和下载的实体)。 在系统内存不足之前,GC应该释放内存。

 int chunkSize = 50; int curCount = 0; while (true) { using (var db = new DbEntities()) { var chunk = db.Contacts.Skip(curCount).Take(chunkSize).ToArray(); curCount += chunkSize; if (chunk.Length == 0) break; foreach (var contact in chunk) { //do any work for the contact here contact.Something = "SomethingNew"; } db.SaveChanges(); } } 

随意玩大块的大小。 块越大,整个过程应该越快,但它将占用更多内存。

怎么样

 IEnumerable allContacts = objDatabase.Contacts.AsEnumerable(); 

永远不要将allContacts转换为列表。 只需使用就像一个枚举器并应用Foreach循环来访问每个联系人。

尝试

上述就是C#学习教程:entity .ToList()生成一个System.OutOfMemoryException分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 foreach (Contacts c in objDatabase.Contacts) c.value = newvalue; 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1019268.html

(0)
上一篇 2022年1月4日
下一篇 2022年1月4日

精彩推荐