public TestSessionWrapper Initialize() {
var dialect = new DialectFactory().Create(this.configuration.ConnectionStringSettings);
// load the data
using (var transactionLessSession = this.configuration.BeginTransactionLessSession()) {
// create database if exists
if (!dialect.IgnoreMultipleDatabases) {
if (transactionLessSession.Dapper.Query(dialect.CheckDatabaseExists(DatabaseName)).Any()) {
transactionLessSession.Dapper.Execute("drop database " + DatabaseName);
}
transactionLessSession.Dapper.Execute("create database " + DatabaseName);
transactionLessSession.Dapper.Execute("use " + DatabaseName);
}
var migrator = new Migrator(
dialect,
new CreateTableWriter(dialect),
new AlterTableWriter(dialect),
new DropTableWriter(dialect),
new StatisticsProvider(null, dialect));
IEnumerable<string> warnings, errors;
var createStatement = migrator.GenerateSqlDiff(
new List<IMap>(),
this.configuration.Maps,
null,
new Mock<ILogger>().Object,
new string[0],
new string[0],
out warnings,
out errors);
var statements = createStatement.Split(';');
foreach (var statement in statements.Where(s => !string.IsNullOrWhiteSpace(s.Trim()))) {
transactionLessSession.Dapper.Execute(statement);
}
}
var session = this.configuration.BeginSession();
if (!dialect.IgnoreMultipleDatabases) {
session.Dapper.Execute("use " + DatabaseName);
}
this.InsertData(session);
return new TestSessionWrapper(session);
}