public static void MigrateFamiliesFailureHandler(Object sender, FailuresProcessingEventArgs args)
        {
            MigrationLog log = MigrationLog.Instance;

            var fa     = args.GetFailuresAccessor();
            var fhOpts = fa.GetFailureHandlingOptions();

            foreach (var fma in fa.GetFailureMessages())
            {
                if (fma.GetSeverity() == FailureSeverity.Warning)
                {
                    log.AppendLine("!!warning");
                    log.AppendLine(fma.GetDescriptionText());
                    args.SetProcessingResult(FailureProcessingResult.Continue);
                    fa.DeleteWarning(fma);
                }
                //note: errors are not being generated on file open
                else if (fma.GetSeverity() == FailureSeverity.Error)
                {
                    log.AppendLine("!!error");
                    log.AppendLine(fma.GetDescriptionText());

                    fhOpts.SetClearAfterRollback(true);
                    fa.SetFailureHandlingOptions(fhOpts);
                    args.SetProcessingResult(FailureProcessingResult.ProceedWithRollBack);
                    fa.RollBackPendingTransaction();
                }
            }
        }
示例#2
0
        private async Task SaveLogEntry(IMongoDatabase migrationLogDb, JsonFileProperty jsonFile)
        {
            var migrationLogs = migrationLogDb.GetCollection <MigrationLog>(_dbSettings.MigrationLogSettings.CollectionName);

            var newLog = new MigrationLog
            {
                Id             = ObjectId.GenerateNewId().ToString(),
                ExecutionDate  = DateTime.UtcNow,
                ScriptFilename = jsonFile.FilePath
            };

            await migrationLogs.InsertOneAsync(newLog);
        }