private void InitActiveRecord()
{
INSNConfig config = this.container.Resolve<INSNConfig>();
ConnectionStringSettingsCollection cfgSettings = WebConfigurationManager.ConnectionStrings;
NameValueCollection db = WebConfigurationManager.GetSection("databaseSettings", "~/" + Globals.CONFIG_FOLDER_PATH) as NameValueCollection;
NameValueCollection ar = WebConfigurationManager.GetSection("activeRecordSettings", "~/" + Globals.CONFIG_FOLDER_PATH) as NameValueCollection;
IDictionary<string, string> settings = new Dictionary<string, string>();
foreach (string key in ar.AllKeys)
{
settings[key] = ar[key];
}
string connStrKey = "connection.connection_string";
string connStrNameKey = "connection.connection_string_name";
bool hasConnectionStringName = settings.ContainsKey(connStrNameKey) && settings[connStrNameKey].Length > 0;
bool hasConnectionString = settings.ContainsKey(connStrKey) && settings[connStrKey].Length > 0;
if (!hasConnectionStringName && !hasConnectionString ||
hasConnectionStringName && settings[connStrNameKey].Equals("tien.somee.com"))
{
bool isRemote = Convert.ToBoolean(config[Globals.ISREMOTE]);
string @connectionString = (isRemote
? cfgSettings[Globals.CONNECTION_REMOTE_NAME]
: cfgSettings[Globals.CONNECTION_LOCAL_NAME]
).ConnectionString;
connectionString = isRemote
? string.Format(connectionString,
db[Globals.DB_DATASOURCE], db[Globals.DB_PORT], db[Globals.DB_NAME],
db[Globals.DB_USER], db[Globals.DB_PASSWORD])
: string.Format(connectionString,
db[Globals.DB_DATASOURCE], db[Globals.DB_PORT], db[Globals.DB_NAME]);
if (hasConnectionStringName)
{
settings.Remove(connStrNameKey);
}
settings[connStrKey] = connectionString;
}
InPlaceConfigurationSource configSource = new InPlaceConfigurationSource();
configSource.Add(typeof(ActiveRecordBase), settings);
configSource.IsRunningInWebApp = Convert.ToBoolean(config[Globals.GLOBAL_ACTIVERECORD_ISWEBAPP]);
configSource.SetDebugFlag(Convert.ToBoolean(config[Globals.GLOBAL_ACTIVERECORD_DEBUG]));
try
{
Assembly asmEntities = Assembly.Load(Globals.ASSEMBLY_NSN_ENTITIES);
ActiveRecordStarter.SessionFactoryHolderCreated += ActiveRecordStarter_SessionFactoryHolderCreated;
ActiveRecordStarter.Initialize(asmEntities, configSource);
}
finally
{
ActiveRecordStarter.SessionFactoryHolderCreated -= ActiveRecordStarter_SessionFactoryHolderCreated;
}
}