public async Task<bool> SaveSettings(SettingsStorageModel settings) { bool result = false; try { using (var db = dbManager.GetConnection()) using (var command = db.Connection.CreateCommand()) { Console.WriteLine("selecting settings, thread {0}", Thread.CurrentThread.ManagedThreadId); command.CommandText = string.Format("SELECT * FROM SETTING WHERE SettingName='{0}'", settings.SettingName); SettingsStorageModel settingToUpdate = null; Console.WriteLine("selecting settings end, thread {0}", Thread.CurrentThread.ManagedThreadId); using (var dbDataReader = await command.ExecuteReaderAsync().ConfigureAwait(false)) { if (dbDataReader.HasRows && dbDataReader.Read()) { settingToUpdate = new SettingsStorageModel() { SettingId = dbDataReader.GetInt64(0), ProfileId = dbDataReader.GetInt64(1), SettingName = dbDataReader.GetString(2), SettingValue = settings.SettingValue }; } dbDataReader.Close(); } if (settingToUpdate != null) { Console.WriteLine("updating settings, thread {0}", Thread.CurrentThread.ManagedThreadId); command.CommandText = string.Format( "UPDATE SETTING SET ProfileId = {0}, SettingName = '{1}', SettingValue = '{2}' WHERE SettingId = {3}", settingToUpdate.ProfileId, settingToUpdate.SettingName, settingToUpdate.SettingValue, settingToUpdate.SettingId); } else { Console.WriteLine("inserting settings, thread {0}", Thread.CurrentThread.ManagedThreadId); command.CommandText = string.Format("INSERT INTO SETTING(ProfileId, SettingName, SettingValue) VALUES ({0}, '{1}', '{2}')", settings.ProfileId, settings.SettingName, settings.SettingValue); } await command.ExecuteNonQueryAsync().ConfigureAwait(false); Console.WriteLine("update/insert settings end settings, thread {0}", Thread.CurrentThread.ManagedThreadId); } result = true; Console.WriteLine("settings db connection closed, thread {0}", Thread.CurrentThread.ManagedThreadId); } catch (Exception ex) { Console.WriteLine("settings db connection exception, thread {0}, text: {0}", Thread.CurrentThread.ManagedThreadId, ex.Message); logger.Error("Exception during execution method \"SaveSettings\": {0}", ex.Message); } return result; }
private SettingsModel StorageToSetting(SettingsStorageModel model) { bool value; bool isBool = bool.TryParse(model.SettingValue, out value); return new SettingsModel { SettingId = model.SettingId, SettingName = model.SettingName, SettingBoolValue = value, SettingStringValue = isBool ? string.Empty : model.SettingValue }; }