Будет ли контекст БД автоматически удаляться, если страница перенаправлена ​​в блоке using? - PullRequest
0 голосов
/ 10 сентября 2018

Недавно я обнаружил, что одно из наших веб-приложений вызывает переполнение процессора и утечку памяти, я пытаюсь выяснить причину, приведенный ниже код похож на страницу с наибольшим временем загрузки, может кто-нибудь сказать, есть ли что-нибудь неправильно с кодом, я подозреваю, что объект dbcontext не удаляется, когда оператор if соответствует и перенаправляет на другую страницу.

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 голосов
/ 10 сентября 2018

Похоже, что это не проблема с контекстом БД, поскольку он выходит из области действия сразу после сохранения изменений. Проблема может быть связана либо с базой данных, либо с тем, как вы написали конструктор для databaseEntities. Использование всегда будет вызывать, наконец, и область действия обязательно закончится.

0 голосов
/ 10 сентября 2018

Ваш dbContext удаляется, как только выполнение покидает область действия. Поэтому я не вижу проблем с этим кодом.
Оператор using скомпилирован с оператором try-finaly, который вызывает метод dispose для вашего объекта в блоке finaly.
Для получения дополнительной информации см. Ссылку ниже.
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/using-statement

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...