LINQ查询是否返回数据库中的所有记录?

问题描述:

实体框架LINQ-to-Entities查询是否会返回数据库中的所有记录(即使是1000万行),还是对检索记录大小有任何限制?LINQ查询是否返回数据库中的所有记录?

+0

当你遇到'OutOfMemoryException'时会受到限制。你正在处理的是什么情况?你打算如何处理这些数据? –

+0

我个人从未使用LINQ2Entities进行这样的查询,我宁愿编写存储过程并使用Dapper来映射它们并返回数据。但似乎它可能?是的。它取决于服务器和其他许多事情。 – Valkyrie

+0

当你检索那么多的记录时,你真的在​​存档数据库。因此检查数据库是否有任何归档工具。 – jdweng

实体框架和LINQ对于它们可以提取多少行没有任何限制。您可能会遇到的问题是使您的服务器内存不足,因为您试图一次检索大量数据。

您应该考虑使用像精致小巧的Valkyriee在评论中提到的,或至少禁用proxy,如果你仍然想使用实体框架:

using(var db = new MyDbContext()) 
{ 
    db.Configuration.ProxyCreationEnabled = false; 
    var data = db.Users.ToList(); // suppose you have 10 milion users 
} 

...只是意识到了什么disabling proxy will cause。我仍然建议为此使用Dapper。

通常一次从数据库获取1000万条记录不是一个好习惯。您可以使用实体推荐的分页功能。