示例#1
0
 public void Up(MigrationDescriptor descriptor)
 {
     log.Debug("Run up migration", descriptor);
     try
     {
         using (var session = DocumentStore.OpenSession())
         {
             descriptor.Status = MigrationStatus.Installing;
             session.Store(descriptor);
             session.SaveChanges();
         }
         IMigration migration;
         if (TryCreateMigrationInstance(descriptor, out migration))
         {
             migration.Up();
         }
         using (var session = DocumentStore.OpenSession())
         {
             descriptor.Status = MigrationStatus.Installed;
             session.Store(descriptor);
             session.SaveChanges();
         }
     }
     catch (Exception e)
     {
         log.ErrorException("Error runing up migration", e);
         using (var session = DocumentStore.OpenSession())
         {
             descriptor.Messages.Add(new MigrationMessage(MigrationActionType.Up, e));
             session.Store(descriptor);
             session.SaveChanges();
         }
     }
 }
示例#2
0
        private bool TryCreateMigrationInstance(MigrationDescriptor descriptor, out IMigration migration)
        {
            migration = null;
            var result =
                descriptor.MigrationTypeFullName != null &&
                (migration = Activator.CreateInstance(MigrationsAssembly.FullName, descriptor.MigrationTypeFullName).Unwrap() as IMigration) != null;

            if (result)
            {
                migration.DocumentStore = DocumentStore;
            }

            return(result);
        }
示例#3
0
        private static MigrationDescriptor GetDescriptorWithUpdatedStatus(string key, Dictionary <string, MigrationDescriptor> validMigrations, Dictionary <string, MigrationDescriptor> installedMigrations)
        {
            MigrationDescriptor auxValid     = null;
            MigrationDescriptor auxInstalled = null;

            if (!validMigrations.TryGetValue(key, out auxValid))
            {
                auxInstalled        = installedMigrations[key];
                auxInstalled.Status = MigrationStatus.InstalledObsolete;
            }
            else if (installedMigrations.TryGetValue(key, out auxInstalled))
            {
                auxValid.Status   = auxInstalled.Status;
                auxValid.Messages = auxInstalled.Messages;
            }
            return(auxValid ?? auxInstalled);
        }
示例#4
0
 public void Down(MigrationDescriptor descriptor)
 {
     log.Debug("Run down migration", descriptor);
     try
     {
         using (var session = DocumentStore.OpenSession())
         {
             descriptor.Status = MigrationStatus.Uninstalling;
             session.Store(descriptor);
             session.SaveChanges();
         }
         IMigration migration;
         if (TryCreateMigrationInstance(descriptor, out migration))
         {
             migration.Down();
         }
         using (var session = DocumentStore.OpenSession())
         {
             var stored = session.Load <MigrationDescriptor>(descriptor.Id);
             if (stored != null)
             {
                 session.Delete(stored);
                 session.SaveChanges();
             }
         }
     }
     catch (Exception e)
     {
         log.ErrorException("Error runing down migration", e);
         using (var session = DocumentStore.OpenSession())
         {
             descriptor.Messages.Add(new MigrationMessage(MigrationActionType.Down, e));
             session.Store(descriptor);
             session.SaveChanges();
         }
     }
 }
示例#5
0
 public void Down(MigrationDescriptor descriptor)
 {
     log.Debug("Run down migration", descriptor);
     try
     {
         using (var session = DocumentStore.OpenSession())
         {
             descriptor.Status = MigrationStatus.Uninstalling;
             session.Store(descriptor);
             session.SaveChanges();
         }
         IMigration migration;
         if (TryCreateMigrationInstance(descriptor, out migration))
         {
             migration.Down();
         }
         using (var session = DocumentStore.OpenSession())
         {
             var stored = session.Load<MigrationDescriptor>(descriptor.Id);
             if (stored != null)
             {
                 session.Delete(stored);
                 session.SaveChanges();
             }
         }
     }
     catch (Exception e)
     {
         log.ErrorException("Error runing down migration", e);
         using (var session = DocumentStore.OpenSession())
         {
             descriptor.Messages.Add(new MigrationMessage(MigrationActionType.Down, e));
             session.Store(descriptor);
             session.SaveChanges();
         }
     }
 }
示例#6
0
        private bool TryCreateMigrationInstance(MigrationDescriptor descriptor, out IMigration migration)
        {
            migration = null;
            var result =
                descriptor.MigrationTypeFullName != null
                && (migration = Activator.CreateInstance(MigrationsAssembly.FullName, descriptor.MigrationTypeFullName).Unwrap() as IMigration) != null;

            if (result)
            {
                migration.DocumentStore = DocumentStore;
            }

            return result;
        }
示例#7
0
 public void Up(MigrationDescriptor descriptor)
 {
     log.Debug("Run up migration", descriptor);
     try
     {
         using (var session = DocumentStore.OpenSession())
         {
             descriptor.Status = MigrationStatus.Installing;
             session.Store(descriptor);
             session.SaveChanges();
         }
         IMigration migration;
         if (TryCreateMigrationInstance(descriptor, out migration))
         {
             migration.Up();
         }
         using (var session = DocumentStore.OpenSession())
         {
             descriptor.Status = MigrationStatus.Installed;
             session.Store(descriptor);
             session.SaveChanges();
         }
     }
     catch (Exception e)
     {
         log.ErrorException("Error runing up migration", e);
         using (var session = DocumentStore.OpenSession())
         {
             descriptor.Messages.Add(new MigrationMessage(MigrationActionType.Up, e));
             session.Store(descriptor);
             session.SaveChanges();
         }
     }
 }