最近我发现我们的一个网络应用是尖峰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();
}
执行离开作用域后,dbContext会立即处理。所以我没有看到这个代码有任何问题。 using语句编译为try-finaly语句,该语句在finaly块中调用对象上的dispose方法。 有关更多信息,请参阅以下链接。 https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/using-statement
它似乎不是DB上下文的问题,因为它在保存更改后就超出了范围。问题可能在于数据库或您为databaseEntities编写构造函数的方式。使用将始终最终调用,范围将肯定结束。