コード例 #1
0
ファイル: DataBossSpec.cs プロジェクト: Rklasens/DataBoss
		public void happy_path_is_happ() {

			if(Context.GetTable<SysObjects>().Any(x => x.Name == "Bar"))
				using(var cmd = new SqlCommand("drop table Bar", Connection))
					cmd.ExecuteNonQuery();
				
			var migration = new DataBossMigrationInfo {
				Id = Migrations.Max(x => (long?)x.Id).GetValueOrDefault() + 1,
				Name = "Great Success!",
			};

			Apply(migration, migrator => {
				migrator.Execute("create table Bar(Id int not null)");
			});

			Check.That(() => SysObjects.Any(x => x.Name == "Bar"));
		}
コード例 #2
0
ファイル: DataBossSpec.cs プロジェクト: Rklasens/DataBoss
		public void rollbacks_failed_migration() {
			Assume.That(() => !SysObjects.Any(x => x.Name == "Foo"));
				
			var failingMigration = new DataBossMigrationInfo {
				Id = Migrations.Max(x => (long?)x.Id).GetValueOrDefault() + 1,
				Name = "Failing Migration",
			};

			Apply(failingMigration, migrator => {
				migrator.Execute("create table Foo(Id int not null)");//should work
				migrator.Execute("select syntax error");//should error
				migrator.Execute("create table Foo(Id int not null)");//should be ignored
			});

			Check.That(
				() => !Migrations.Any(x => x.Id == failingMigration.Id),
				() => !SysObjects.Any(x => x.Name == "Foo"));
		}
コード例 #3
0
ファイル: DataBossSpec.cs プロジェクト: Rklasens/DataBoss
		void Apply(DataBossMigrationInfo info, Action<IDataBossMigrationScope> scope) {
			var migrator = new DataBossSqlMigrationScope(Connection);
			migrator.Begin(info);
			scope(migrator);
			migrator.Done();
		}
コード例 #4
0
			public void Begin(DataBossMigrationInfo info) {}