示例#1
0
        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 });
        }