Важность удаления EF DbContext до выхода из консольного приложения в C # - PullRequest
1 голос
/ 04 июля 2019

Я пишу простое консольное приложение, которое выполняет только следующее:
1. Запросите в базе данных некоторые данные.
2. Обработайте эти данные.
3. Обновите базу данных.

Я написал код, который состоит только из метода Main, например:

class Program
{
    static void Main(string[] args)
    {
       try
       {
          var dbContext = new MyDatabaseContext();
          var dbRecord = dbContext.MyTable.First(r => r.Status == 1);

          // Do some work

          dbRecord.Status = 2;
          dbContext.SaveChanges();   
       }
       catch(Exception)
       {
         // left empty
       }    
    }
}

Мой коллега сказал мне, что я должен заключить код в оператор "using", чтобы закрыть соединение между приложением и сервером базы данных, как показано ниже:

class Program
{
    static void Main(string[] args)
    {
       try
       {
           using(var dbContext = new MyDatabaseContext())
           {
              var dbRecord = dbContext.MyTable.First(r => r.Status == 1);

              // Do some work

              dbRecord.Status = 2;
              dbContext.SaveChanges();      
           } 
       }
       catch(Exception)
       {
         // left empty
       }  
    }
}

Я знаю важность удаления объекта «IDisposable» перед тем, как покинуть область или когда объект больше не нужен, чтобы избежать утечки памяти и высвободить ресурсы.

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

Итак, мне нужно ответить на следующее:

1. Важно ли, в моем случае, располагать объект DbContext до выхода из программы?
2. Будет ли соединение по-прежнему открыто даже после закрытия программы (как правило, за исключением или закрыто пользователем)?
3. Что произойдет, если я не буду использовать выражение "using"?

Буду благодарен, если вы предоставите ответы с официальными ссылками.

Обратите внимание, что меня беспокоит утечка памяти и ресурсов. Потеря данных сейчас не моя забота.

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