public TContextType Create() { TContextType context = null; string provider = ApplicationContext.Instance.Database.ToString(); DatabaseConfigurationInfo configuration = ApplicationContext.Instance.Container.Resolve <DatabaseConfigurationInfo>(provider); DbConnection connection = DataFactory.GetConnection(configuration); if (connection != null) { context = (TContextType)Activator.CreateInstance(typeof(TContextType), connection, configuration.Schema); } return(context); }
/// <summary> /// /// </summary> /// <param name="configuration"></param> /// <returns></returns> public static DbConnection GetConnection(DatabaseConfigurationInfo configuration) { DbConnection result = null; DbProviderFactory factory = DbProviderFactories.GetFactory(configuration.ProviderValue); result = factory.CreateConnection(); if (string.IsNullOrEmpty(configuration.ConnectionString)) { result.ConnectionString = GetConnectionString(factory, configuration); } else { result.ConnectionString = configuration.ConnectionString; } return(result); }
/// <summary> /// /// </summary> /// <param name="factory"></param> /// <param name="configuration"></param> /// <returns></returns> private static string GetConnectionString(DbProviderFactory factory, DatabaseConfigurationInfo configuration) { string result = null; DbConnectionStringBuilder connectionStringBuilder = factory.CreateConnectionStringBuilder(); if (connectionStringBuilder != null) { switch (configuration.Provider) { case DatabaseTypeCode.SqlServer: connectionStringBuilder.Add("Data Source", configuration.Server); connectionStringBuilder.Add("Initial Catalog", configuration.Database); connectionStringBuilder.Add("User ID", configuration.UserName); connectionStringBuilder.Add("Password", configuration.Password); break; case DatabaseTypeCode.Oracle: connectionStringBuilder.Add("Data Source", configuration.Server); connectionStringBuilder.Add("User ID", configuration.UserName); connectionStringBuilder.Add("Password", configuration.Password); break; case DatabaseTypeCode.MySql: connectionStringBuilder.Add("Server", configuration.Server); connectionStringBuilder.Add("Database", configuration.Database); connectionStringBuilder.Add("User ID", configuration.UserName); connectionStringBuilder.Add("Password", configuration.Password); break; } result = connectionStringBuilder.ToString(); } return(result); }
public void AddDatabaseConfiguration(string applicationName, string tenantName, DatabaseConfigurationInfo configurationInfo) { UseRepository( repository => { var updatedConfiguration = new List <DatabaseConfigurationInfo>(); var configuration = repository.GetTenantDatabaseConfiguration(applicationName, tenantName); if (configuration != null) { updatedConfiguration.AddRange(configuration); } updatedConfiguration.Add(configurationInfo); repository.UpdateTenantDatabaseConfiguration(applicationName, tenantName, updatedConfiguration.ToArray()); }); }
public void UpdateDatabaseConfiguration(string applicationName, string tenantName, DatabaseConfigurationInfo configurationInfo) { UseRepository( repository => { var configuration = repository.GetTenantDatabaseConfiguration(applicationName, tenantName); if (configuration != null) { var item = configuration.FirstOrDefault(i => i.Name == configurationInfo.Name); if (item == null) { throw new ArgumentException(string.Format("Configuration with name '{0}' could not be found for tenant {1}, application {2}.", configurationInfo.Name, tenantName, applicationName)); } item.ProviderName = configurationInfo.ProviderName; item.ConnectionString = configurationInfo.ConnectionString; repository.UpdateTenantDatabaseConfiguration(applicationName, tenantName, configuration); } }); }
public ActionResult AddTenantDatabaseConfiguration(string applicationName, string name, DatabaseConfigurationInfo configurationInfo) { Requires.ArgumentNotNullOrEmptyString(applicationName, "applicationName"); Requires.ArgumentNotNullOrEmptyString(name, "name"); Requires.ArgumentNotNull(configurationInfo, "configurationInfo"); Requires.ArgumentNotNull(configurationInfo.Name, "configurationInfo.Name"); Requires.ArgumentNotNull(configurationInfo.ConnectionString, "configurationInfo.ConnectionString"); var client = new ApplicationManagerClient(); client.AddDatabaseConfiguration(applicationName, name, configurationInfo); return(RedirectToAction("TenantDatabaseConfiguration", new { applicationName, name })); }
public void UpdateDatabaseConfiguration(string applicationName, string tenantName, DatabaseConfigurationInfo configurationInfo) { Channel.UpdateDatabaseConfiguration(applicationName, tenantName, configurationInfo); }