Esempio n. 1
0
        private string TestExecuteDataMigrationScripts(string[] scriptsDescriptions, out List <string> log, out List <string> sqlLog, bool skipScriptsWithWrongOrder = false)
        {
            log = new List <string>();

            var sqlExecuterLog = new SqlExecuterLog();

            sqlLog = sqlExecuterLog;

            using (var container = new RhetosTestContainer())
            {
                container.InitializeSession += builder =>
                {
                    builder.RegisterInstance(sqlExecuterLog).ExternallyOwned();
                    builder.RegisterDecorator <SqlExecuterMonitor, ISqlExecuter>();
                };

                container.AddLogMonitor(log);

                var sqlExecuter = container.Resolve <ISqlExecuter>();
                sqlExecuter.ExecuteSql("DELETE FROM Rhetos.DataMigrationScript");

                var sqlBatches = container.Resolve <SqlTransactionBatches>();

                int deployment = 0;
                foreach (string scriptsDescription in scriptsDescriptions)
                {
                    sqlExecuter.ExecuteSql($"--DBUpdate: {++deployment}");
                    var dbUpdateOptions = new DbUpdateOptions()
                    {
                        DataMigrationSkipScriptsWithWrongOrder = skipScriptsWithWrongOrder
                    };
                    var dataMigration = new DataMigrationScriptsExecuter(sqlExecuter, container.Resolve <ILogProvider>(),
                                                                         ParseDataMigrationScriptsFromScriptsDescription(scriptsDescription), dbUpdateOptions, sqlBatches);
                    dataMigration.Execute();
                }

                var report = new List <string>();
                sqlExecuter.ExecuteReader("SELECT Path, Active FROM Rhetos.DataMigrationScript ORDER BY OrderExecuted",
                                          reader => report.Add(reader.GetString(0).Replace(".sql", "") + (reader.GetBoolean(1) ? "" : "-")));
                return(string.Join(", ", report));
            }
        }
        private string TestExecuteDataMigrationScripts(string[] scriptsDescriptions, out List <string> log, out List <string> sqlLog, bool skipScriptsWithWrongOrder = false)
        {
            var systemLog = new List <string>();

            log = systemLog;

            var sqlExecuterLog = new SqlExecuterLog();

            sqlLog = sqlExecuterLog;

            using (var scope = TestScope.Create(builder => builder
                                                .ConfigureLogMonitor(systemLog)
                                                .ConfigureSqlExecuterMonitor(sqlExecuterLog)))
            {
                var sqlExecuter = scope.Resolve <ISqlExecuter>();
                sqlExecuter.ExecuteSql("DELETE FROM Rhetos.DataMigrationScript");

                var sqlBatches = scope.Resolve <SqlTransactionBatches>();

                int deployment = 0;
                foreach (string scriptsDescription in scriptsDescriptions)
                {
                    sqlExecuter.ExecuteSql($"--DBUpdate: {++deployment}");
                    var dbUpdateOptions = new DbUpdateOptions()
                    {
                        DataMigrationSkipScriptsWithWrongOrder = skipScriptsWithWrongOrder
                    };
                    var dataMigration = new DataMigrationScriptsExecuter(sqlExecuter, scope.Resolve <ILogProvider>(),
                                                                         ParseDataMigrationScriptsFromScriptsDescription(scriptsDescription), dbUpdateOptions, sqlBatches);
                    dataMigration.Execute();
                }

                var report = new List <string>();
                sqlExecuter.ExecuteReader("SELECT Path, Active FROM Rhetos.DataMigrationScript ORDER BY OrderExecuted",
                                          reader => report.Add(reader.GetString(0).Replace(".sql", "") + (reader.GetBoolean(1) ? "" : "-")));
                return(string.Join(", ", report));
            }
        }