最近我发现我们的一个Web应用程序出现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();
}
答案 0 :(得分:3)
您的dbContext在执行离开作用域后立即处置。所以我看不出这段代码有什么问题。
using语句编译为try-finaly语句,该语句在finaly块中的对象上调用dispose方法。
有关更多信息,请参见下面的链接。
Here is my code
答案 1 :(得分:2)
对于数据库上下文,这似乎不是问题,因为在保存更改之后,它就超出了范围。问题可能出在数据库上,或是您为databaseEntities编写构造函数的方式。 使用将始终最终调用,并且范围将肯定结束。