Я пишу некоторые консольные приложения для перемещения данных между базами данных SQLite. Классы для соединения и различные подготовленные операторы имеют важное значение IDisposable, поэтому я создаю экземпляры этих объектов, используя блоки using
, например:
using (SQLiteConnection sqlite_conn = new SQLiteConnection(connectionString))
{
sqlite_conn.Open();
using (SQLiteCommand sqlite_cmd = new SQLiteCommand())
{
sqlite_cmd.Connection = sqlite_conn;
sqlite_cmd.CommandText = "INSERT INTO SOMETHING SOMETHING;";
sqlite_cmd.ExecuteNonQuery();
}
sqlite_conn.Close();
}
Но мне нужно иметь возможность создавать эти соединения в одном методе, а затем вызывать их в других методах. Каков самый чистый и наименее запутанный способ хранения этих соединений в качестве переменных экземпляра? Я хочу убедиться, что их .Dispose()
методы вызываются интеллектуальным способом, но я не вижу хорошего способа убедиться, что все действие происходит в контексте одного using
блока.
Я понимаю, что это вопрос новичка в C #, поэтому, пожалуйста, адаптируйте свои ответы как таковые. Если у вас есть предложенное решение, я хотел бы, чтобы вы включили пример кода для иллюстрации.
РЕДАКТИРОВАТЬ: Мой случай использования - консольное приложение. Кто-то передает строки подключения источника и назначения, и консольное приложение выполняет операцию. Могу ли я на самом деле заставить мой консольный класс Program реализовывать IDisposable следующим образом?
class Program : IDisposable
{
private SQLiteConnection sourceConnection;
private SQLiteConnection destinationConnection;
public void Dispose()
{
sourceConnection.Dispose();
destinationConnection.Dispose();
}
}