繁体   English   中英

实体框架为每个表提供超过800,000条记录

[英]Entity Framework foreach on table over 800,000 records

迭代具有大量记录的表的正确方法是什么? 我需要评估表中的所有记录。 我正在使用Entity Framework连接并从MS SQL数据库获取信息。 我正在使用一个简单的foreach循环;

foreach (var x in MyEntity.MyTable)
{
   //logic process
}

对于少于500,000条记录(没有确切的数字)的表,此方法非常适用。 问题在于,当它击中较大的表(例如800,000条记录)时,应用程序变得不稳定并且将崩溃。 我应注意,该应用正在使用大量RAM(大约4-6GB)

使用AsNoTracking

foreach (var x in MyEntity.MyTable.AsNoTracking())

这将确保在表中的每个项目都经过迭代时,EF不会对其进行跟踪,并且不会在DbContext因此可以在必要时由CLR对实例进行DbContext

请注意,这意味着您无法在项目上进行任何更改,并且希望将其保留回DbContext,您必须附加实例才能执行此操作。


这确实假定未显示的代码中没有其他问题会占用大量内存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM