Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Framework Entity z migracją bazy danych mysql zawodzą podczas tworzenia indeksów

miałem ten sam problem, po przeczytaniu postów zdecydowałem się utworzyć klasę dziedziczącą po MySqlMigrationSqlGenerator i nadpisać protected override MigrationStatement Generate ( CreateIndexOperation op ) , następnie przy konfiguracji migracji dodaję :SetSqlGenerator ( "MySql.Data.MySqlClient", nowy myMigrationSQLGenerator ( ) );

to jest kod klasy:

public class myMigrationSQLGenerator : MySqlMigrationSqlGenerator
{
    private string TrimSchemaPrefix ( string table )
    {
        if ( table.StartsWith ( "dbo." ) )
            return table.Replace ( "dbo.", "" );
        return table;
    }

    protected override MigrationStatement Generate ( CreateIndexOperation op )
    {
        var u = new MigrationStatement ( );
        string unique = ( op.IsUnique ? "UNIQUE" : "" ), columns = "";
        foreach ( var col in op.Columns )
        {
            columns += ( $"`{col}` DESC{( op.Columns.IndexOf ( col ) < op.Columns.Count - 1 ? ", " : "" )}" );
        }
        u.Sql = $"CREATE {unique} INDEX `{op.Name}` ON `{TrimSchemaPrefix ( op.Table )}` ({columns}) USING BTREE";
        return u;
    }
}

i to jest kod na Migracje\Configuration.cs :

    public Configuration ()
    {           
        AutomaticMigrationsEnabled = false;
        SetSqlGenerator ( "MySql.Data.MySqlClient", new myMigrationSQLGenerator ( ) );
    }

to działa dla mnie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql Jak wybrać tylko z kolumny, jeśli kolumna istnieje?

  2. Jak pogrupować ciągłe zakresy za pomocą MySQL

  3. Ograniczenia klucza obcego:kiedy używać ON UPDATE i ON DELETE?

  4. przekonwertuj listę na ciąg, aby wstawić do mojego sql w jednym wierszu w python scrapy

  5. Używanie Mysql w linii poleceń w osx - nie znaleziono polecenia?