Exemple #1
0
        private void SaveUnSerializableSettings(SettingBase settings)
        {
			using(SqlQuery query = new SqlQuery(QueryMode.Prepare))
			{
				query.CommandText = @"

				IF EXISTS (SELECT * FROM [bx_Settings] WHERE [TypeName] = @TypeName AND [Key] = @Key)
					UPDATE [bx_Settings] SET [Value] = @Value WHERE [TypeName] = @TypeName AND [Key] = @Key;
				ELSE
					INSERT [bx_Settings] ([TypeName], [Key], [Value]) VALUES (@TypeName, @Key, @Value);";

                foreach (PropertyInfo property in settings.GetType().GetProperties())
                {
                    if (property.IsDefined(typeof(SettingItemAttribute), true))
                    {
                        query.CreateParameter<string>("@TypeName", settings.GetType().FullName, SqlDbType.NVarChar, 200);
                        query.CreateParameter<string>("@Key", property.Name, SqlDbType.NVarChar, 100);
                        query.CreateParameter<string>("@Value", settings.GetPropertyValue(property), SqlDbType.NText);

                        query.ExecuteNonQuery();
                    }
                }
			}
        }