LINQ查询是否返回数据库中的所有记录?
答
实体框架和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万条记录不是一个好习惯。您可以使用实体推荐的分页功能。
当你遇到'OutOfMemoryException'时会受到限制。你正在处理的是什么情况?你打算如何处理这些数据? –
我个人从未使用LINQ2Entities进行这样的查询,我宁愿编写存储过程并使用Dapper来映射它们并返回数据。但似乎它可能?是的。它取决于服务器和其他许多事情。 – Valkyrie
当你检索那么多的记录时,你真的在存档数据库。因此检查数据库是否有任何归档工具。 – jdweng