public void can_perform_adhoc_executereader_and_also_still_delete_the_database() { string databaseName = "issuetest"; using (var database = new TemporarySQLiteDatabase(databaseName)) { database.Create(); string connectionString = database.SharedConnection.ConnectionString; //string.Format("Data Source={0}; Version=3;", dbFilePath); var upgrader = DeployChanges.To .SQLiteMonoDatabase(connectionString) .WithScript("Script0002", "CREATE TABLE IF NOT EXISTS Bar (Id int)") .Build(); var result = upgrader.PerformUpgrade(); Assert.IsTrue(result.Successful); // Calling execute reader on the adhoc sql runner causes a datareader to be created - and if not disposed of, // then the when TemporarySQLiteDatabase is disposed, it can't delete the file. var lastVersion = database.SqlRunner.ExecuteReader("SELECT * FROM SchemaVersions ORDER BY SchemaVersionId DESC LIMIT 1"); var appliedScriptRusult = lastVersion[0]; // Assert.That(lastVersion[0].Values[""].ToString().EndsWith("Script0002")); } }
public void SetUp() { log = Substitute.For <IUpgradeLog>(); upgradeResult = null; scripts = new List <SqlScript> { new SqlScript("Script1.sql", "create table Foo (Id int identity)"), new SqlScript("Script2.sql", "alter table Foo add column Name varchar(255)"), new SqlScript("Script3.sql", "insert into Foo (Name) values ('test')") }; database = new TemporarySQLiteDatabase("IntegrationScenarios"); upgradeEngineBuilder = DeployChanges.To .SQLiteDatabase(database.SharedConnection) .WithScripts(new TestScriptProvider(scripts)) .LogTo(log); }
static void Main() { using (var database = new TemporarySQLiteDatabase("test")) { database.Create(); var upgrader = DeployChanges.To .SQLiteDatabase(database.ConnectionString) .WithScriptsEmbeddedInAssembly(Assembly.GetExecutingAssembly()) .LogToConsole() .Build(); var watch = new Stopwatch(); watch.Start(); var result = upgrader.PerformUpgrade(); watch.Stop(); Display("File", result, watch.Elapsed); } // Database will be deleted at this point using (var database = new InMemorySQLiteDatabase()) { var upgrader = DeployChanges.To .SQLiteDatabase(database.ConnectionString) .WithScriptsEmbeddedInAssembly(Assembly.GetExecutingAssembly()) .LogToConsole() .Build(); var watch = new Stopwatch(); watch.Start(); var result = upgrader.PerformUpgrade(); watch.Stop(); Display("InMemory", result, watch.Elapsed); } // Database will disappear from memory at this point }