public void InitializeMigrations(SQLiteConnection db) { if (Migrations == null || Migrations.Count == 0) { throw new Exception("No migrations defined. Add initial migration to initialize database"); } var repository = new MigrationsRepository(); var currentMigrations = repository.GetAll(db) .ConvertAll(s => s.Name); if (currentMigrations.Count > Migrations.Count) { throw new Exception("Application is not compatible with the database version"); } foreach (var migration in Migrations) { var migrationName = migration.GetType().Name; if (!currentMigrations.Contains(migrationName)) { migration.Up(db); db.Insert(new MigrationEntity { Name = migrationName, ExecutionDate = DateTime.Now }); } } }
public IList <StatusItem> ReportStatus() { var statusItem = new StatusItem("__NAME__.Domain.Persistence"); var repo = new MigrationsRepository(_unitOfWork); //Try sending a messages try { var lastMigration = repo.LastMigration; statusItem.Comment = String.Format("Last migration {0}", lastMigration); statusItem.Status = StatusItem.OK; } catch (Exception e) { statusItem.Status = StatusItem.Error; statusItem.Comment = e.Message; } return(new[] { statusItem }); }