如果页面在using块内重定向,DB Context是否将自动处置?

时间:2018-09-10 05:38:21

标签: c# asp.net-mvc

最近我发现我们的一个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();
}

2 个答案:

答案 0 :(得分:3)

您的dbContext在执行离开作用域后立即处置。所以我看不出这段代码有什么问题。
using语句编译为try-finaly语句,该语句在finaly块中的对象上调用dispose方法。
有关更多信息,请参见下面的链接。
Here is my code

答案 1 :(得分:2)

对于数据库上下文,这似乎不是问题,因为在保存更改之后,它就超出了范围。问题可能出在数据库上,或是您为databaseEntities编写构造函数的方式。 使用将始终最终调用,并且范围将肯定结束。