最近我发现我们的一个网络应用程序出现 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 关注
- 181 浏览
添加回答
举报
0/150
提交
取消