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 ActionResult UpdateTenantDatabaseConfiguration(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.UpdateDatabaseConfiguration(applicationName, name, configurationInfo);
            return RedirectToAction("TenantDatabaseConfiguration", new { applicationName, name });
        }
        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 void UpdateTenantDatabaseConfiguration(string applicationName, string tenantName, DatabaseConfigurationInfo[] configuration)
        {
            UseDataContext(dataContext =>
                               {
                                   var dataTenant =
                                       dataContext.ApplicationTenants.FirstOrDefault(
                                           t =>
                                           t.Application == applicationName &&
                                           t.TenantName == tenantName);
                                   if (dataTenant == null)
                                   {
                                       throw new ArgumentException(
                                           string.Format("Tenant {0} from application {1} could not be found.",
                                                         tenantName, applicationName));
                                   }

                                   dataTenant.DatabaseConfiguration = DataHelper.MapToXml(configuration);

                                   dataContext.SubmitChanges();
                               });
        }