コード例 #1
0
        public void SetUpFixture()
        {
            var configurationManager = new ConfigurationManager();

            var configurationService = new AzureBlobConfigurationService(configurationManager, _logService.Object);

            var environment = configurationService.Get <CommonWebConfiguration>().Environment;

            string databaseName = $"RaaTest-{environment}";

            _connectionString = $"Server=SQLSERVERTESTING;Database={databaseName};Trusted_Connection=True;";

            var databaseProjectPath = AppDomain.CurrentDomain.BaseDirectory + $"\\..\\..\\..\\{DatabaseProjectName}";
            var dacPacRelativePath  = $"\\bin\\{environment}\\{DatabaseProjectName}.dacpac";
            var dacpacFilePath      = Path.Combine(databaseProjectPath + dacPacRelativePath);

            if (!File.Exists(dacpacFilePath))
            {
                //For NCrunch on Dave's machine
                databaseProjectPath = $"C:\\_Git\\Beta\\src\\{DatabaseProjectName}";
                dacpacFilePath      = Path.Combine(databaseProjectPath + dacPacRelativePath);
            }

            var dbInitialiser = new DatabaseInitialiser(dacpacFilePath, _connectionString, databaseName);

            dbInitialiser.Publish(true);

            var seedScripts = new string[]
            {
            };
            var seedObjects = GetSeedObjects();

            dbInitialiser.Seed(seedScripts);
            dbInitialiser.Seed(seedObjects);
        }
コード例 #2
0
        private DatabaseConfigurationProvider()
        {
            var configurationManager = new ConfigurationManager();

            var configurationService = new AzureBlobConfigurationService(configurationManager, _logService.Object);

            var environment      = configurationService.Get <CommonWebConfiguration>().Environment;
            var connectionString = configurationService.Get <SqlConfiguration>().ConnectionString;

            var originInitialCatalog = connectionString
                                       .Split(';')
                                       .Single(p => p.StartsWith("Initial Catalog"))
                                       .Split('=')
                                       .Last();

            DatabaseTargetName = $"AvmsPlus-{environment}-Test";

            TargetConnectionString = connectionString.Replace($"Initial Catalog={originInitialCatalog}",
                                                              $"Initial Catalog={DatabaseTargetName}");

            var databaseProjectPath = AppDomain.CurrentDomain.BaseDirectory + $"\\..\\..\\..\\{DatabaseProjectName}";
            var dacPacRelativePath  = $"\\bin\\{environment}\\{DatabaseProjectName}.dacpac";

            DacPacFilePath = Path.Combine(databaseProjectPath + dacPacRelativePath);
            if (!File.Exists(DacPacFilePath))
            {
                //For NCrunch on Dave's machine
                databaseProjectPath = $"C:\\_Git\\Beta\\src\\{DatabaseProjectName}";
                DacPacFilePath      = Path.Combine(databaseProjectPath + dacPacRelativePath);
            }
        }
コード例 #3
0
        public static void Main(string[] args)
        {
            var log           = new ConsoleLogService();
            var configService = new AzureBlobConfigurationService(new MyConfigurationManager(), log);

            var processor = new MigrationProcessor(configService, log);

            processor.Execute(new System.Threading.CancellationTokenSource().Token);

            Console.ReadKey();
        }
コード例 #4
0
        static void Main(string[] args)
        {
            var log = new ConsoleLogService();

            log.Info("Initialisation");

            var options = new Options();

            if (!CommandLine.Parser.Default.ParseArguments(args, options))
            {
                return;
            }

            if (options.SourceConnectionString == null || options.TargetConnectionString == null || options.RecordBatchSize == 0)
            {
                var configService    = new AzureBlobConfigurationService(new MyConfigurationManager(), log);
                var persistentConfig = configService.Get <MigrateFromAvmsConfiguration>();

                if (options.SourceConnectionString == null)
                {
                    options.SourceConnectionString = persistentConfig.SourceConnectionString;
                }
                if (options.TargetConnectionString == null)
                {
                    options.TargetConnectionString = persistentConfig.TargetConnectionString;
                }
                if (options.RecordBatchSize == 0)
                {
                    options.RecordBatchSize = persistentConfig.RecordBatchSize;
                }
                if (options.MaxNumberOfChangesToDetailPerTable == null)
                {
                    options.MaxNumberOfChangesToDetailPerTable = persistentConfig.MaxNumberOfChangesToDetailPerTable;
                }
                if (options.AnonymiseData == false)
                {
                    options.AnonymiseData = persistentConfig.AnonymiseData;
                }
            }

            if (options.Verbose)
            {
                Console.WriteLine($@"
SourceConnectionString             = {options.SourceConnectionString}
TargetConnectionString             = {options.TargetConnectionString}
RecordBatchSize                    = {options.RecordBatchSize}
MaxNumberOfChangesToDetailPerTable = {options.MaxNumberOfChangesToDetailPerTable}
AnonymiseData                      = {options.AnonymiseData}
SingleFullUpdate                   = {options.SingleFullUpdate}
");
            }

            var sourceDatabase = new GetOpenConnectionFromConnectionString(options.SourceConnectionString);
            var targetDatabase = new GetOpenConnectionFromConnectionString(options.TargetConnectionString);

            var genericSyncRepository = new GenericSyncRespository(log, sourceDatabase, targetDatabase);
            var avmsSyncRepository    = new AvmsSyncRespository(log, sourceDatabase, targetDatabase);

            Func <ITableSpec, IMutateTarget> createMutateTarget;

            if (options.DummyRun)
            {
                createMutateTarget = tableSpec => new DummyMutateTarget(log, tableSpec);
            }
            else
            {
                createMutateTarget = tableSpec => new MutateTarget(log, genericSyncRepository, (int)Math.Max(5000 * tableSpec.BatchSizeMultiplier, 1), tableSpec);
            }

            var tables = new AvmsToAvmsPlusTables(log, options, avmsSyncRepository, !options.ExcludeVacancy).All;

            if (options.SingleTable != null)
            {
                tables = tables.Where(t => t.Name == options.SingleTable);
            }

            var controller = new Controller(options, log, genericSyncRepository, createMutateTarget, tables);

            if (options.Reset)
            {
                controller.Reset();
            }

            var cancellationTokenSource = new System.Threading.CancellationTokenSource();

            bool threaded = true;

            if (options.SingleFullUpdate)
            {
                controller.DoFullScanForAll(threaded);
            }
            else
            {
                controller.DoAll(new System.Threading.CancellationTokenSource(), threaded);
            }
        }