如果在使用块中重定向页面,是否会自动处理DB Context?

问题描述 投票:1回答:2

最近我发现我们的一个网络应用是尖峰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
2个回答
3
投票

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


2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.