public override void ConfigureApplication(string providerKey, XDocument configXml, BendyObject installParams)
{
dynamic dynamicParams = installParams;
string dbType = dynamicParams.DatabaseType.ToString();
var connectionString = "";
var providerName = "";
var nhDriver = "";
//we need to create the connection strings if it's not custom
switch (dbType)
{
case "MSSQL":
connectionString = string.Format("Data Source={0}; Initial Catalog={1};User Id={2};Password={3}",
dynamicParams.Server, dynamicParams.DatabaseName, dynamicParams.Username, dynamicParams.Password);
providerName = "System.Data.SqlClient";
nhDriver = "MsSql2008";
break;
case "MySQL":
connectionString = string.Format("Server={0}; Database={1};Uid={2};Pwd={3}",
dynamicParams.Server, dynamicParams.DatabaseName, dynamicParams.Username, dynamicParams.Password);
providerName = "MySql.Data.MySQLClient";
nhDriver = "MySql";
break;
case "SQLCE":
connectionString = "Data Source=|DataDirectory|Rebel.sdf";
providerName = "System.Data.SqlServerCe.4.0";
nhDriver = "MsSqlCe4";
break;
case "Custom":
//limiting to MS SQL atm
connectionString = dynamicParams.ConnectionString;
providerName = "System.Data.SqlClient";
nhDriver = "MsSql2008";
break;
}
var connstringKey = "";
var hiveElement = new ProviderConfigurationSection()
{
ConnectionStringKey = "{0}.ConnString",
Driver = SupportedNHDrivers.MsSqlCe4,
SessionContext = "web"
};
var elementName = providerKey;
hiveElement.DriverAsString = nhDriver;
connstringKey = string.Format(hiveElement.ConnectionStringKey, providerKey);
hiveElement.ConnectionStringKey = connstringKey;
DeepConfigManager.SerializeProviderConfigSection(configXml, hiveElement, "rebel/persistenceProviderSettings/" + elementName, true);
//add the connection strings
var connStrings = new ConnectionStringsSection();
connStrings.ConnectionStrings.Add(new ConnectionStringSettings(connstringKey, connectionString, providerName));
//now serialize the connection strings to the config
var connectionStringElement = DeepConfigManager.SerializeProviderConfigSection(configXml, connStrings, "connectionStrings", false);
var newConnString = new XElement("add");
DeepConfigManager.AddPropertiesToElement(connStrings.ConnectionStrings[0], newConnString);
connectionStringElement.Add(newConnString);
// The following is superceded by the above to support multiple "add" references: DeepConfigManager.SerializeProviderConfigSection(configXml, connStrings.ConnectionStrings[0], "connectionStrings/add", false);
}