示例#1
0
        // TODO: Add support for --SourceMigration
        // TODO: Add support for --Verbose
        public virtual void UpdateDatabase([NotNull] IConfigurationSourceContainer configuration)
        {
            Check.NotNull(configuration, "configuration");

            var targetMigrationName = configuration.Get(Constants.TargetMigrationOption);
            var contextAssemblyFile = configuration.Get(Constants.ContextAssemblyOption);

            if (string.IsNullOrEmpty(contextAssemblyFile))
            {
                throw new InvalidOperationException(Strings.ContextAssemblyNotSpecified);
            }

            var references            = configuration.Get(Constants.ReferencesOption);
            var contextTypeName       = configuration.Get(Constants.ContextTypeOption);
            var migrationAssemblyFile = configuration.Get(Constants.MigrationAssemblyOption);
            var migrationNamespace    = configuration.Get(Constants.MigrationNamespaceOption);

            UpdateDatabase(
                contextAssemblyFile,
                targetMigrationName,
                references,
                contextTypeName,
                migrationAssemblyFile,
                migrationNamespace);
        }
示例#2
0
        IEnumerable <ShellSettings> IShellSettingsManager.LoadSettings()
        {
            var filePaths = _appDataFolder
                            .ListDirectories("Sites")
                            .SelectMany(path => _appDataFolder.ListFiles(path))
                            .Where(path => {
                var filePathName = Path.GetFileName(path);

                return(_settingFileNameExtensions.Any(p =>
                                                      string.Equals(filePathName, string.Format(_settingsFileNameFormat, p), StringComparison.OrdinalIgnoreCase)
                                                      ));
            });

            List <ShellSettings> shellSettings = new List <ShellSettings>();

            foreach (var filePath in filePaths)
            {
                IConfigurationSourceContainer configurationContainer = null;

                var extension = Path.GetExtension(filePath);

                switch (extension)
                {
                case ".json":
                    configurationContainer = new Microsoft.Framework.ConfigurationModel.Configuration()
                                             .AddJsonFile(filePath);
                    break;

                case ".xml":
                    configurationContainer = new Microsoft.Framework.ConfigurationModel.Configuration()
                                             .AddXmlFile(filePath);
                    break;

                case ".ini":
                    configurationContainer = new Microsoft.Framework.ConfigurationModel.Configuration()
                                             .AddIniFile(filePath);
                    break;

                case ".txt":
                    configurationContainer = new Microsoft.Framework.ConfigurationModel.Configuration()
                                             .Add(new DefaultFileConfigurationSource(_appDataFolder, filePath));
                    break;
                }

                if (configurationContainer != null)
                {
                    var shellSetting = new ShellSettings {
                        Name             = configurationContainer.Get <string>("Name"),
                        RequestUrlPrefix = configurationContainer.Get <string>("RequestUrlPrefix")
                    };

                    TenantState state;
                    shellSetting.State = Enum.TryParse(configurationContainer.Get <string>("State"), true, out state) ? state : TenantState.Uninitialized;

                    shellSettings.Add(shellSetting);
                }
            }

            return(shellSettings);
        }
示例#3
0
        public virtual void CommitConfiguration([NotNull] IConfigurationSourceContainer configuration)
        {
            Check.NotNull(configuration, "configuration");

            var configFile = configuration.Get(Constants.ConfigFileOption);

            if (string.IsNullOrEmpty(configFile))
            {
                configFile = Constants.DefaultConfigFile;
            }

            configFile = ResolvePath(configFile);

            var iniFileConfigurationSource = CreateIniFileConfigurationSource(configFile);

            if (!File.Exists(configFile))
            {
                WriteFile(configFile, CreateEmptyConfiguration(), true);
            }

            iniFileConfigurationSource.Load();

            foreach (var key in GetCommitableSettings())
            {
                var value = configuration.Get(key);
                if (!string.IsNullOrEmpty(value))
                {
                    iniFileConfigurationSource.Set(key, value);
                }
            }

            iniFileConfigurationSource.Commit();
        }
示例#4
0
        // TODO: Add support for --SourceMigration
        public virtual IReadOnlyList <SqlStatement> GenerateScript([NotNull] IConfigurationSourceContainer configuration)
        {
            Check.NotNull(configuration, "configuration");

            var targetMigrationName = configuration.Get(Constants.TargetMigrationOption);

            var contextAssemblyFile = configuration.Get(Constants.ContextAssemblyOption);

            if (string.IsNullOrEmpty(contextAssemblyFile))
            {
                throw new InvalidOperationException(Strings.ContextAssemblyNotSpecified);
            }

            var references            = configuration.Get(Constants.ReferencesOption);
            var contextTypeName       = configuration.Get(Constants.ContextTypeOption);
            var migrationAssemblyFile = configuration.Get(Constants.MigrationAssemblyOption);
            var migrationNamespace    = configuration.Get(Constants.MigrationNamespaceOption);

            return(GenerateScript(
                       contextAssemblyFile,
                       targetMigrationName,
                       references,
                       contextTypeName,
                       migrationAssemblyFile,
                       migrationNamespace));
        }
示例#5
0
        public virtual ScaffoldedMigration CreateMigration([NotNull] IConfigurationSourceContainer configuration)
        {
            Check.NotNull(configuration, "configuration");

            var migrationName = configuration.Get(Constants.MigrationNameOption);

            if (string.IsNullOrEmpty(migrationName))
            {
                throw new InvalidOperationException(Strings.MigrationNameNotSpecified);
            }

            var migrationDirectory = configuration.Get(Constants.MigrationDirectoryOption);

            var contextAssemblyFile = configuration.Get(Constants.ContextAssemblyOption);

            if (string.IsNullOrEmpty(contextAssemblyFile))
            {
                throw new InvalidOperationException(Strings.ContextAssemblyNotSpecified);
            }

            var references            = configuration.Get(Constants.ReferencesOption);
            var contextTypeName       = configuration.Get(Constants.ContextTypeOption);
            var migrationAssemblyFile = configuration.Get(Constants.MigrationAssemblyOption);
            var migrationNamespace    = configuration.Get(Constants.MigrationNamespaceOption);

            return(CreateMigration(
                       migrationName,
                       contextAssemblyFile,
                       migrationDirectory,
                       references,
                       contextTypeName,
                       migrationAssemblyFile,
                       migrationNamespace));
        }
示例#6
0
        // Internal for testing.
        protected internal virtual DbContext LoadContext(IConfigurationSourceContainer configuration)
        {
            var contextAssemblyRef = configuration.Get(Constants.ContextAssemblyOption);

            if (string.IsNullOrEmpty(contextAssemblyRef))
            {
                throw new InvalidOperationException(Strings.ContextAssemblyNotSpecified);
            }

            var contextTypeName = configuration.Get(Constants.ContextTypeOption);

            return(LoadContext(contextAssemblyRef, contextTypeName));
        }
示例#7
0
        public virtual IReadOnlyList <IMigrationMetadata> GetMigrations([NotNull] IConfigurationSourceContainer configuration)
        {
            Check.NotNull(configuration, "configuration");

            var source = configuration.Get(Constants.MigrationSourceOption);

            var contextAssemblyRef = configuration.Get(Constants.ContextAssemblyOption);

            if (string.IsNullOrEmpty(contextAssemblyRef))
            {
                throw new InvalidOperationException(Strings.ContextAssemblyNotSpecified);
            }

            var contextTypeName      = configuration.Get(Constants.ContextTypeOption);
            var migrationAssemblyRef = configuration.Get(Constants.MigrationAssemblyOption);
            var migrationNamespace   = configuration.Get(Constants.MigrationNamespaceOption);

            return(GetMigrations(
                       contextAssemblyRef,
                       source,
                       contextTypeName,
                       migrationAssemblyRef,
                       migrationNamespace));
        }
 public static IConfigurationSourceContainer AddEnvironmentVariables(this IConfigurationSourceContainer configuration, string prefix)
 {
     configuration.Add(new EnvironmentVariablesConfigurationSource(prefix));
     return(configuration);
 }
 public static IConfigurationSourceContainer AddCommandLine(this IConfigurationSourceContainer configuration, string[] args)
 {
     configuration.Add(new CommandLineConfigurationSource(args));
     return(configuration);
 }
 public static IConfigurationSourceContainer AddIniFile(this IConfigurationSourceContainer configuration, string path)
 {
     configuration.Add(new IniFileConfigurationSource(path));
     return(configuration);
 }
示例#11
0
        // Internal for testing.
        protected internal virtual DbContext LoadContext(IConfigurationSourceContainer configuration)
        {
            var contextAssemblyFile = configuration.Get(Constants.ContextAssemblyOption);
            if (string.IsNullOrEmpty(contextAssemblyFile))
            {
                throw new InvalidOperationException(Strings.ContextAssemblyNotSpecified);
            }

            var references = configuration.Get(Constants.ReferencesOption);
            var contextTypeName = configuration.Get(Constants.ContextTypeOption);

            return LoadContext(contextAssemblyFile, references, contextTypeName);
        }