我建立一個應用程序,並正在使用實體框架6.但我到內存使用的問題上運行。無論我嘗試什麼,我遲早會遇到內存不足錯誤。到目前爲止,我已經嘗試了以下內容:實體框架6內存達到2GB
- 使用using作爲上下文。
- 保存批次更改和處理上下文。
- 手動調用GC.Collect()。
但是,這些都沒有阻止Entity框架使用更多的內存與我做的每個saveChanges。最終達到2GB的限制並導致我的程序崩潰。
有什麼辦法,我不知道的,使實體框架版本的所有記憶?
編輯
using (var sqlite = new myEntities())
{
sqlite.Configuration.AutoDetectChangesEnabled = false;
sqlite.Configuration.ValidateOnSaveEnabled = false;
foreach (var someItem in someList)
{
var newItem = new Item
{
...
};
sqlite.tableName.Add(newItem);
if (++countRecords%1000 == 0)
{
sqlite.SaveChanges();
}
}
sqlite.SaveChanges();
}
如上所述以上我還嘗試設置上下文,而不使用和調用SaveChanges後設置它。
if (++countRecords%1000 == 0)
{
sqlite.SaveChanges();
sqlite.Dispose();
sqlite = new myEntities()
}
是否爲每個數據庫請求創建新的Context實例? – Lance
要獲得幫助,您需要找出一種方法來創建一個能夠再現內存問題的最小但完整的程序。否則,正如你可以理解的那樣,我們建議的任何事情都將是純粹的猜測。 – sstan
你能分享你的EF查詢嗎? – Sampath