Пример #1
0
        private static void ExecuteUpdate(IEnumerable <DbMigration> migrations, DbMigrationsConfiguration configuration)
        {
            var sqlConfiguration = DbMigrationSqlConfigurationFactory.GetSqlConfiguration(configuration.ProviderName);

            var providerFactory = DbProviderFactories.GetFactory(configuration.ProviderName);
            var version         = Assembly.GetExecutingAssembly().GetName().Version;

            using (var connection = providerFactory.CreateConnection())
            {
                connection.ConnectionString = configuration.ConnectionString;
                var cmd = connection.CreateCommand();
                cmd.CommandType = System.Data.CommandType.Text;
                connection.Open();

                foreach (var migration in migrations)
                {
                    try
                    {
                        var statementBuilder = new StringBuilder();
                        migration.DatabaseVersion = sqlConfiguration.SqlInspection.GetDatabaseVersion();
                        migration.Up();
                        var statements = sqlConfiguration.SqlGenerator.Generate(migration.Operations, string.Empty, migration.DatabaseVersion);

                        foreach (var statement in statements)
                        {
                            statementBuilder.Append(statement.Sql);
                            cmd.CommandText = statement.Sql;
                            cmd.ExecuteNonQuery();
                        }

                        var history = new HistoryModel
                        {
                            CreatedOn      = DateTime.Now,
                            GeneratedSql   = statementBuilder.ToString(),
                            Id             = migration.Id,
                            Name           = migration.Name,
                            ProductVersion = version
                        };
                        sqlConfiguration.HistoryRepository.InsertHistory(history);
                    }
                    catch (Exception ex)
                    {
                        migration.Down();
                        throw;
                    }
                }
            }
        }
Пример #2
0
 public static void RegisterSqlServerGenerator(this DbMigrationsConfiguration migration)
 {
     DbMigrationSqlConfigurationFactory.SetSqlConfiguration("System.Data.SqlClient", new SqlServerMigrationSqlConfiguration(migration));
 }