void IDatabaseDDLProvider.CreateDatabase(DatabaseInfo dbInfo) { if (dbInfo.DbProvider != DbProviders.SqlServer) { throw new InvalidOperationException("Invalid database provider"); } using (var sqlConnection = GetConnectionFactory(BuildMasterDatabaseConnectionString(dbInfo))()) { sqlConnection.Open(); var sqlRunner = new AdhocSqlRunner(() => sqlConnection.CreateCommand()); sqlRunner.ExecuteNonQuery(@"CREATE DATABASE [@database]".Replace("@database", dbInfo.InitialCatalog)); } }
void IDatabaseDDLProvider.DropDatabase(DatabaseInfo dbInfo) { using (var sqlConnection = GetConnectionFactory(BuildMasterDatabaseConnectionString(dbInfo))()) { sqlConnection.Open(); var sqlRunner = new AdhocSqlRunner(() => sqlConnection.CreateCommand()); sqlRunner.ExecuteNonQuery(@" IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'@database') BEGIN ALTER DATABASE [@database] SET OFFLINE WITH ROLLBACK IMMEDIATE; ALTER DATABASE [@database] SET ONLINE; DROP DATABASE [@database]; END ".Replace("@database", dbInfo.InitialCatalog)); } }