示例#1
0
        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);
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }
示例#4
0
        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());
            });
        }
示例#5
0
        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);
 }