Лично я думаю, что вы слишком обдумали это, и примеры кода в этой теме слишком сложны. Я понятия не имею, почему люди также реализуют IDisposable в своем классе Program, поскольку он удаляется при выходе.
Я не могу придумать ни одной причины, по которой не использовать, или почему вы не можете использовать оператор using () {}.
Вы хотите открыть Соединение и удерживать его? Зачем? Все реальные соединения находятся за кулисами в пуле соединений .net, так что новые объекты Соединений не имеют большого значения. Просто откройте и закройте, как вам нужно, и пул соединений обрабатывает все это за кадром.
Я отредактировал мой пример, чтобы обернуть его в классе, чтобы вы также могли иметь инкапсуляцию.
class Program
{
static void Main(string[] args)
{
DBWorker worker = new DBWorker();
worker.DoDatabaseWork();
}
}
public class DBWorker
{
private void DoDatabaseWork()
{
using (SQLiteConnection sourceDB = new SQLiteConnection( GetConnectionString() ))
{
sourceDB.Open();
using (SQLiteConnection destDB = new SQLiteConnection( GetConnectionString() ))
{
destDB.Open();
}
}
}
}