예제 #1
0
        public ValidationDbMigrationContext(SqlConnection sqlConnection)
        {
            SqlConnection = sqlConnection ?? throw new ArgumentNullException(nameof(sqlConnection));
            SqlConnectionAccessToken = sqlConnection.AccessToken;

            ValidationDbContextFactory.ValidationEntitiesContextFactory = () =>
            {
                SetSqlConnectionAccessToken();
                return new ValidationEntitiesContext(SqlConnection);
            };

            var migrationsConfiguration = new ValidationMigrationsConfiguration();
            GetDbMigrator = () => new DbMigrator(migrationsConfiguration, new ValidationEntitiesContext(SqlConnection));
        }
예제 #2
0
        public void NoPendingMigrations()
        {
            var currentTimestamp = DateTimeOffset.UtcNow.ToString("yyyyMMddHHmmssFFFFFFF");

            _dbName = $"PendingMigrationsTest{currentTimestamp}Validation";
            var connectionString = $@"Data Source=(localdb)\mssqllocaldb; Initial Catalog={_dbName}; Integrated Security=True; MultipleActiveResultSets=True";

            var migrationsConfiguration = new ValidationMigrationsConfiguration
            {
                TargetDatabase = new DbConnectionInfo(connectionString, "System.Data.SqlClient"),
            };

            var dbMigrator = new DbMigrator(migrationsConfiguration);
            var migrations = dbMigrator.GetLocalMigrations();

            dbMigrator.Update(migrations.Last());

            var migrationScaffolder = new MigrationScaffolder(dbMigrator.Configuration);

            var migrationName = $"TestMigration{currentTimestamp}";
            var result        = migrationScaffolder.Scaffold(migrationName);

            _output.WriteLine("Migration content:");
            _output.WriteLine(new string('-', 60));
            _output.WriteLine(result.UserCode);
            _output.WriteLine(new string('-', 60));

            Assert.Equal(
                $@"namespace {dbMigrator.Configuration.MigrationsNamespace}
{{
    using System;
    using System.Data.Entity.Migrations;
    
    public partial class {migrationName} : DbMigration
    {{
        public override void Up()
        {{
        }}
        
        public override void Down()
        {{
        }}
    }}
}}
", result.UserCode);
        }