我使用ef6,從vs2015的NuGet獲取的最新版本,Sql Server 2014資料庫
當資料庫資料改變時,查詢的結果還是原來的資料,并未更新,網上查到說是本地快取引起,每次都new就可以了。
于是改為
private void Query()
{
DBContext context=new MyDBContext();
do something.....
context.dispose();
context=null;
}
或者
private void Query()
{
using (DBContext context=new MyDBContext())
{
do something.....
}
}
發現資料庫的資料更新是能正常讀取到了,但發生了記憶體泄漏,感覺每次new出來的context并未被系統回收掉,直至整個程式因記憶體占用過多而崩潰
不知道是什么問題,請大神賜教,謝謝
uj5u.com熱心網友回復:
只有回收不及時的可能,沒有不被回收的可能本來EF就比較吃記憶體的
你可以優化下你的查詢陳述句,或者換其它輕量級的框架
uj5u.com熱心網友回復:
當資料庫資料改變時,查詢的結果還是原來的資料。你saveChange了嗎?
發現資料庫的資料更新是能正常讀取到了,但發生了記憶體泄漏,感覺每次new出來的context并未被系統回收掉,直至整個程式因記憶體占用過多而崩潰
不可能不回收的。只是每次回收完,你開啟的ef鏈接更多。
對這種情況,你使用Using吧。
uj5u.com熱心網友回復:
我有觀察程序式記憶體的使用情況
在沒改為每次都new新實體的時候,程式記憶體占用50M的樣子,上下浮動,只是快取的問題,讀不到資料庫的最新資料
改成每次都new新實體,程式處理一切正常,但記憶體不斷增長,直至長到 3G 多崩潰.....
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/135043.html
標籤:C#
上一篇:C# 呼叫ipaddress.parse()介面提示配置系統未能初始化
下一篇:求大佬幫助解答
