Я совершенно новые приложения sql/базы данных и пробую простое приложение для управления контактами с использованием Visual Studio 2015 C#. Я использую «SQL Express LocalDB». Я читал в Google, что он предназначен для целей разработки, но Microsoft также упоминает, что его можно использовать и для производственных целей.
Моя проблема в том, что когда я пробую приложение из своей системы разработки, загрузка приложения в первый раз занимает несколько секунд, но после этого каждый запрос выполняется быстро. Когда я попробовал это в системе одного моего друга, каждый раз, когда я пытаюсь использовать любой запрос, требуется время. В базе всего 20-30 записей.
Я создаю новое соединение, используя «новый SqlConnection», а затем выполняю команду, созданную «новым SqlCommand», и после выполнения запроса закрываю соединение.
Вот фрагмент кода из моего приложения
SqlConnection sqlConnection = new SqlConnection(@"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename = ""C:\ContactsDB.mdf""; Integrated Security = True; Connect Timeout = 30";);
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.Connection = sqlConnection;
sqlCmd.CommandText = "SELECT Id, first_name, last_name from ContactsMaster ORDER BY first_name";
sqlConnection.Open();
SqlDataReader reader = sqlCmd.ExecuteReader();
try
{
while (reader.Read())
{
ListViewItem lvi = new ListViewItem(reader["first_name"]);
listViewItems.Add(lvi);
lvi.SubItems.Add(reader[0].ToString());
}
}
finally
{
reader.Close();
}
sqlConnection.Close();
Q. Должен ли я держать соединение открытым все время, пока приложение работает? Я не думаю, что это следует предлагать. Как будто база данных сбоя приложения может быть повреждена.
Один из фонов, на котором люди говорят, что LocalDB закрывает соединение каждые новые миллисекунды. Так должен ли я продолжать пинговать базу данных каждые несколько миллисекунд? Или мне вообще не стоит использовать localdb в продакшене?
Я хочу сделать приложение таким, чтобы требования были очень низкими в отношении предварительных требований к базе данных. Например, установка LocalDB действительно проста.
Я не использовал SQL Server Express, установка Express также является бесшовной, как LocalDB, и могу ли я использовать строку подключения, например LocalDB, в Express, указав имя файла .mdf напрямую?