2010-09-29 103 views
4

如果我運行了多個查詢並且ObjectContext被實體填充了,如果我不再需要這些實體,我該如何清除上下文。我知道我需要儘快處理上下文,但在這種情況下是不可能的。那麼有什麼方法可以從上下文中刪除這些對象嗎?如何清除對象上下文

+0

可能的重複:http://stackoverflow.com/questions/3774395/how-to-clear-contents-of-objectcontext-in-entity-framework-1-0 – Yakimych 2010-09-30 09:31:12

回答

1

您可以嘗試在Detach上下文中的每個實體。

+0

起初我想過,但我是希望有更好的方法。我想沒有。 – Max 2010-10-01 14:32:20

11

沒有「清除」ObjectContext的方法。唯一的方法是配置ObjectContext的當前實例並啓動新實例。

0

您可以嘗試分離上下文中的每個實體。

Max是正確的,但是當你想做任何需要很長時間的事情時,上下文會存儲很多對象,並不斷在內存中成長,並使你的應用程序變慢。

這是由泄漏存儲器調用。

我現在有EntityFramework 6這個問題,但我不知道如何「確切地」修復它。

總是我需要做一個查詢,我起牀的上下文,並做到這一點,但這個行動是不同的,我有很多東西要計算,在一個循環中,我保持上下文直到完成。現在我正在處理清單後的清單,但我的系統中仍然存在泄漏內存,並且上下文肯定存在此問題。任何建議「團隊」?我不知道實體框架的作品。

+0

這似乎並不是問題的答案,它沒有解決問題。最好把它寫成註釋 – abarisone 2015-03-18 13:22:42

+0

我試過了,相信我,但是我的聲望很低。對不起! – 2015-03-23 11:33:32

+1

如果你發現你的Context正在增長並且隨着你加載更多的實體而增長...並且你不需要保存這些實體的任何改變(也許你只是加載它們來讀取值或在其他計算中使用它們,但是您不需要對它們進行更改以便將其保存回數據庫),那麼您可以在查詢中使用AsNoTracking()方法來告知EF不會跟蹤它們,並且會節省大量內存。看到這裏:https://msdn.microsoft.com/en-us/data/jj556203.aspx – MattSlay 2015-06-13 04:10:53