예제 #1
0
        public async Task UpdateDatabaseAsync(IMediator mediator, string database)
        {
            var databaseFileHandler = new DatabaseFileHandler(database);

            foreach (var updateStep in this._updateCoordinator.GetUpdateStepsBeginningFromVersion(new Version(1, 0, 0,
                                                                                                              0)))
            {
                using (var connection = databaseFileHandler.OpenConnection())
                {
                    using (var transaction = connection.BeginTransaction())
                    {
                        var scriptsToRun = updateStep.GetSqlUpdateScripts();
                        foreach (var script in scriptsToRun)
                        {
                            await connection.ExecuteAsync(script);
                        }

                        transaction.Commit();
                    }
                }

                await updateStep.PerformMigrationsAsync(mediator);
            }
        }
예제 #2
0
        public void Database_Create_ConnectionCouldBeEstablished()
        {
            // Arrange
            var exampleFile         = "ConnectionAfterCreateTest.db";
            var databaseFileHandler = new DatabaseFileHandler(exampleFile);

            databaseFileHandler.DeleteDatabaseIfExists();

            // Act && Assert
            var fullexampleFile = Path.Combine(DataDirectories.GetUserApplicationDatabasesDirectory(), exampleFile);

            Assert.DoesNotThrow(() => databaseFileHandler.CreateNewDatabase());
            var fileWasCreated      = File.Exists(fullexampleFile);
            var connectionWasOpened = false;

            using (var connection = databaseFileHandler.OpenConnection())
            {
                connectionWasOpened = connection.State == ConnectionState.Open;
            }

            Assert.That(fileWasCreated);
            Assert.That(connectionWasOpened);
            databaseFileHandler.DeleteDatabaseIfExists();
        }