[英]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)
foreach (var x in MyEntity.MyTable.AsNoTracking())
这将确保在表中的每个项目都经过迭代时,EF不会对其进行跟踪,并且不会在DbContext
因此可以在必要时由CLR对实例进行DbContext
。
请注意,这意味着您无法在项目上进行任何更改,并且希望将其保留回DbContext,您必须附加实例才能执行此操作。
这确实假定未显示的代码中没有其他问题会占用大量内存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.