首页 > 解决方案 > 如果页面在 using 块内被重定向,DB Context 会被自动处理吗?

问题描述

最近我发现我们的一个网络应用程序出现 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();
}

标签: c#asp.net-mvc

解决方案


执行离开范围后,您的 dbContext 立即处置。所以我认为这段代码没有任何问题。
using 语句编译为 try-finaly 语句,该语句在 finaly 块中调用对象的 dispose 方法。
有关更多信息,请参阅下面的链接。
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/using-statement


推荐阅读