#c_sharp #sql_server
При сохранении данных в БД возникает ошибка: Существует назначенный этой команде Command открытый DataReader, который требуется предварительно закрыть Удаление работает отлично, все удаляется, но при новом добавлении данных возникает ошибка. В коде отметил строку где возникает ошибка. В чем причина и как её исправить? public bool UpdateSettings(Guid settingsId, ListusersModel) { using (var connection = new SqlConnection(_connectionString)) { connection.Open(); try { using (var command = connection.CreateCommand()) { command.CommandText = "DELETE FROM UsersSettings WHERE SettingsId = @SettingsId"; command.Parameters.AddWithValue("@SettingsId", settingsId); command.ExecuteReader(); } foreach (var userModel in usersModel) { using (var command = connection.CreateCommand()) { command.CommandText = @"INSERT UsersSettings(SettingsId, SettingsValue, IsEnabled) VALUES (@SettingsId, @SettingsValue, 1)"; command.Parameters.AddWithValue("@SettingsId", settingsId); command.Parameters.AddWithValue("@SettingsValue", userModel.SettingsValue); command.ExecuteReader(); // Ошибка возникает в данной строке } } return true; } catch (Exception exception) { _log.LogError("Не удалось сохранить настройки.", exception); return false; } } }
Ответы
Ответ 1
Reader, который возвращает ExecuteReader, нужно вручную закрывать. Если не используете результат запроса, вызывайте ExecuteNonQuery.
Комментариев нет:
Отправить комментарий