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 }); } } }