2017-07-16 103 views
-2

實體框架LINQ-to-Entities查詢是否會返回數據庫中的所有記錄(即使是1000萬行),還是對檢索記錄大小有任何限制?LINQ查詢是否返回數據庫中的所有記錄?

+0

當你遇到'OutOfMemoryException'時會受到限制。你正在處理的是什麼情況?你打算如何處理這些數據? –

+0

我個人從未使用LINQ2Entities進行這樣的查詢,我寧願編寫存儲過程並使用Dapper來映射它們並返回數據。但似乎它可能?是的。它取決於服務器和其他許多事情。 – Valkyrie

+0

當你檢索那麼多的記錄時,你真的在​​存檔數據庫。因此檢查數據庫是否有任何歸檔工具。 – jdweng

回答

1

實體框架和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。

0

通常一次從數據庫獲取1000萬條記錄不是一個好習慣。您可以使用實體推薦的分頁功能。

相關問題