最近我發現我們的一個網絡應用程序出現 CPU 峰值和內存泄漏,我試圖找出原因,下面的代碼類似于加載時間最長的頁面,有人可以告訴我有什么問題嗎代碼,我懷疑當 if 語句匹配并重定向到另一個頁面時,dbcontext 對象沒有被釋放。using (databaseEntities dbContext = new databaseEntities()){ TABLE1 Existing = dbContext.TABLE1.Where(R => R.IsComplete).FirstOrDefault(); if (Existing != null) { return RedirectToAction("SecondView"); } TABLE1 obj = new TABLE1(); obj.Name = "Name"; obj.City = "City"; obj.Date_Created = DateTime.Now; dbContext.TABLE1.Add(obj); dbContext.SaveChanges();}
2 回答

幕布斯7119047
TA貢獻1794條經驗 獲得超8個贊
執行離開范圍后,您的 dbContext 立即處置。所以我認為這段代碼沒有任何問題。
using 語句編譯為 try-finaly 語句,該語句在 finaly 塊中調用對象的 dispose 方法。
有關更多信息,請參閱下面的鏈接。
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/using-statement

catspeake
TA貢獻1111條經驗 獲得超0個贊
數據庫上下文似乎不是問題,因為它在保存更改后就超出了范圍。問題可能出在數據庫或您為 databaseEntities 編寫構造函數的方式上。using 將始終調用 finally 并且范圍肯定會結束。
- 2 回答
- 0 關注
- 206 瀏覽
添加回答
舉報
0/150
提交
取消