public override void SaveToDataStore(ExtensionType extensionType, string extensionId, object settings)
{
if (settings == null)
{
throw new ArgumentNullException("settings");
}
// Save
var xs = new XmlSerializer(settings.GetType());
string objectXml;
using (var sw = new StringWriter())
{
xs.Serialize(sw, settings);
objectXml = sw.ToString();
}
using (var conn = this.CreateConnection())
{
if (conn.HasConnection)
{
var sqlQuery = string.Format("DELETE FROM {0}DataStoreSettings WHERE BlogId = {1}blogid AND ExtensionType = {1}type AND ExtensionId = {1}id; ", this.tablePrefix, this.parmPrefix);
using (var cmd = conn.CreateTextCommand(sqlQuery))
{
var p = cmd.Parameters;
p.Add(conn.CreateParameter(FormatParamName("blogid"), Blog.CurrentInstance.Id.ToString()));
p.Add(conn.CreateParameter(FormatParamName("type"), extensionType.GetHashCode()));
p.Add(conn.CreateParameter(FormatParamName("id"), extensionId));
cmd.ExecuteNonQuery();
cmd.CommandText = string.Format("INSERT INTO {0}DataStoreSettings (BlogId, ExtensionType, ExtensionId, Settings) VALUES ({1}blogid, {1}type, {1}id, {1}file)", this.tablePrefix, this.parmPrefix);
p.Add(conn.CreateParameter(FormatParamName("file"), objectXml));
cmd.ExecuteNonQuery();
}
}
}
}