Я пишу простое консольное приложение, которое выполняет только следующее:
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"?
Буду благодарен, если вы предоставите ответы с официальными ссылками.
Обратите внимание, что меня беспокоит утечка памяти и ресурсов. Потеря данных сейчас не моя забота.