public static void Run(string connectionString) { var firstMigration = typeof(Lucid.Database.Migrations.Y2016.M01.V01); var assembly = new SingleAssembly(firstMigration.Assembly); var migrationGenerator = new SqlServer2008Generator(); var announcer = new NullAnnouncer(); var options = new ProcessorOptions(); var dbFactory = new SqlServerDbFactory(); var runnerContext = new RunnerContext(announcer) { Database = "SqlServer2008", Connection = connectionString, Targets = new string[] { firstMigration.Assembly.FullName }, NestedNamespaces = true, Namespace = "Lucid.Database.Migrations", }; using (var connection = new SqlConnection(connectionString)) using (var processor = new SqlServerProcessor(connection, migrationGenerator, announcer, options, dbFactory)) { var runner = new MigrationRunner(assembly, runnerContext, processor); runner.MigrateUp(); } }
/// <summary> /// Migration runner /// </summary> /// <param name="connectionString">Database connection string</param> /// <param name="assembly">Assembly containing the migration classes to run</param> public Runner(string connectionString, Assembly assembly) { _connectionString = connectionString; _assembly = assembly; Announcer = new NullAnnouncer(); Options = new ProcessorOptions(); MigrationGenerator = new SqlServer2008Generator(); }
public IMigrationProcessor CreateMigrationProcessor(RunnerContext context, IDbConnection connection) { try { if (connection.State != ConnectionState.Open) connection.Open(); IMigrationGenerator migrationGenerator; using (var command = new SqlCommand("SELECT CAST(LEFT(CAST(SERVERPROPERTY('productversion') AS varchar(50)),CHARINDEX('.',CAST(SERVERPROPERTY('productversion') AS varchar(50)))-1)AS int)", connection as SqlConnection)) { var version = (int)command.ExecuteScalar(); switch (version) { case 9: migrationGenerator = new SqlServer2005Generator(); break; case 10: migrationGenerator = new SqlServer2008Generator(); break; default: migrationGenerator = new SqlServer2012Generator(); // throw new Exception(string.Format("无法识别的数据库版本:{0}。", version)); break; } } return new SqlServerProcessor( connection , migrationGenerator , context.Announcer, new ProcessorOptions { PreviewOnly = context.PreviewOnly, ProviderSwitches = context.ProviderSwitches, Timeout = context.Timeout } , new SqlServerDbFactory()); } finally { if (connection.State == ConnectionState.Open) connection.Close(); } }
public static void Main(string[] args) { var connection = new SqlConnection("data source=172.16.1.186;UID=lssuser;PWD=password1;initial catalog=lss"); var sb = new StringBuilder(); var textWriter = new StringWriter(sb); var announcer = new TextWriterAnnouncer(textWriter); var generator = new SqlServer2008Generator(); var processor = new SqlServerProcessor(connection, generator, announcer, new ProcessorOptions(), new SqlServerDbFactory()); var dumper = new SqlServerSchemaDumper(processor, announcer); var schema = dumper.ReadDbSchema(); var schemaWriter = new SchemaWriter(); schemaWriter.WriteToFile(schema, "C:\\migration.cs"); }
protected static void ExecuteWithSqlServer2008(Action<IMigrationProcessor> test, bool tryRollback) { var serverOptions = IntegrationTestOptions.SqlServer2008; if (!serverOptions.IsEnabled) return; var announcer = new TextWriterAnnouncer(System.Console.Out); announcer.Heading("Testing Migration against MS SQL Server 2008"); var generator = new SqlServer2008Generator(); ExecuteWithSqlServer(serverOptions, announcer, generator, test, tryRollback); }
public void SetUp() { generator = new SqlServer2008Generator(); }
public void Setup() { Generator = new SqlServer2008Generator(); }