private bool HandlePropertySetException(SettingsBase settings, SettingsStorageModel property, Exception ex, bool?throwSetException = null) { throwSetException = throwSetException ?? ThrowPropertySetException; if (!throwSetException.Value) { string caughtExceptionDetails = string.Format("{0}-{1}", ex.GetType().Name, property.Name); _periodicReaderErrors.Add(caughtExceptionDetails); if (PropertyError != null) //only raise event when not throttling { var propertyException = new SettingsPropertyException( String.Format("Error setting property {0}.{1}", settings.Category, property.Name), property.Name, settings.Category, ex); var repeatingErrorEventArgs = new RepeatingErrorEventArgs() { Exception = propertyException, IsRepeating = _periodicReaderErrors.Contains(caughtExceptionDetails) }; PropertyError.Invoke(settings, repeatingErrorEventArgs); } return(true); } return(false); }
public bool WriteSetting(SettingsStorageModel setting) { if (ReadOnly) { return(false); } using (var conn = new SqlConnection(_connectionString)) { conn.Open(); using (var cmd = new SqlCommand(_mergeQuery, conn)) { if (setting.Value != null) { cmd.Parameters.Add("@value", SqlDbType.NVarChar).Value = setting.Value; } else { cmd.Parameters.Add("@value", SqlDbType.NVarChar).Value = DBNull.Value; } cmd.Parameters.Add("@name", System.Data.SqlDbType.VarChar).Value = setting.Name; cmd.Parameters.Add("@category", System.Data.SqlDbType.VarChar).Value = setting.Category; return(cmd.ExecuteNonQuery() > 0); } } }
public IEnumerable <SettingsStorageModel> ReadSettings(IList <string> categories, DateTime?lastChangedMin = null) { if (categories == null || categories.Count == 0) { return(null); } using (var conn = new SqlConnection(_connectionString)) { conn.Open(); using (var cmd = new SqlCommand()) { cmd.Connection = conn; if (lastChangedMin.HasValue) { cmd.Parameters.Add("@minTime", System.Data.SqlDbType.DateTime).Value = lastChangedMin; } var parameters = new string[categories.Count]; for (var i = 0; i < categories.Count; i++) { parameters[i] = string.Format("@cat{0}", i); cmd.Parameters.AddWithValue(parameters[i], categories[i]); } var query = string.Format("SELECT category, name, value, UpdatedAt FROM {0} WHERE category in ({1})", _settingsTableName, string.Join(", ", parameters)); if (lastChangedMin.HasValue) { query += " AND UpdatedAt > @minTime"; } cmd.CommandText = query; using (var reader = cmd.ExecuteReader()) { var result = new List <SettingsStorageModel>(42); while (reader.Read()) { var setting = new SettingsStorageModel() { Category = reader.GetString(0), Name = reader.GetString(1), Value = reader.IsDBNull(2) ? null : reader.GetString(2), UpdatedAt = reader.GetDateTime(3) }; result.Add(setting); } return(result); } } } }
public bool WriteSetting(SettingsStorageModel s) { var existing = Content.Single(c => c.Category == s.Category && c.Name == s.Name); if (existing == null) { s.UpdatedAt = DateTime.UtcNow; Content.Add(s); return true; } else { existing.Value = s.Value; existing.UpdatedAt = DateTime.UtcNow; return false; } }
public bool WriteSetting(SettingsStorageModel s) { var existing = Content.Single(c => c.Category == s.Category && c.Name == s.Name); if (existing == null) { s.UpdatedAt = DateTime.UtcNow; Content.Add(s); return(true); } else { existing.Value = s.Value; existing.UpdatedAt = DateTime.UtcNow; return(false); } }
protected virtual SettingsStorageModel ToDbModel(PropertyInfo property, SettingsBase settings) { if (!property.CanRead || !property.CanWrite) { return(null); } if (property.Name == "ReadOnly") //system property { return(null); } var value = property.GetValue(settings, null); var model = new SettingsStorageModel() { Category = settings.Category, UpdatedAt = DateTime.UtcNow, Name = property.Name }; model.Value = Converter.ConvertToString(value); return(model); }
public IEnumerable<SettingsStorageModel> ReadSettings(IList<string> categories, DateTime? lastChangedMin = null) { if (categories == null || categories.Count == 0) return null; using (var conn = new SqlConnection(_connectionString)) { conn.Open(); using (var cmd = new SqlCommand()) { cmd.Connection = conn; if (lastChangedMin.HasValue) cmd.Parameters.Add("@minTime", System.Data.SqlDbType.DateTime).Value = lastChangedMin; var parameters = new string[categories.Count]; for (var i = 0; i < categories.Count; i++) { parameters[i] = string.Format("@cat{0}", i); cmd.Parameters.AddWithValue(parameters[i], categories[i]); } var query = string.Format("SELECT category, name, value, UpdatedAt FROM {0} WHERE category in ({1})", _settingsTableName, string.Join(", ", parameters)); if (lastChangedMin.HasValue) query += " AND UpdatedAt > @minTime"; cmd.CommandText = query; using (var reader = cmd.ExecuteReader()) { var result = new List<SettingsStorageModel>(42); while (reader.Read()) { var setting = new SettingsStorageModel() { Category = reader.GetString(0), Name = reader.GetString(1), Value = reader.IsDBNull(2) ? null : reader.GetString(2), UpdatedAt = reader.GetDateTime(3) }; result.Add(setting); } return result; } } } }
public bool WriteSetting(SettingsStorageModel setting) { if (ReadOnly) return false; using (var conn = new SqlConnection(_connectionString)) { conn.Open(); using (var cmd = new SqlCommand(_mergeQuery, conn)) { if (setting.Value != null) cmd.Parameters.Add("@value", SqlDbType.NVarChar).Value = setting.Value; else cmd.Parameters.Add("@value", SqlDbType.NVarChar).Value = DBNull.Value; cmd.Parameters.Add("@name", System.Data.SqlDbType.VarChar).Value = setting.Name; cmd.Parameters.Add("@category", System.Data.SqlDbType.VarChar).Value = setting.Category; return cmd.ExecuteNonQuery() > 0; } } }