sql >> Databáze >  >> RDS >> Mysql

Entity framework s migrací databáze mysql selže při vytváření indexů

Měl jsem stejný problém, po přečtení příspěvků jsem se rozhodl vytvořit třídu, která zdědí MySqlMigrationSqlGenerator a přepsat chráněné přepsání MigrationStatement Generate ( CreateIndexOperation op ) , poté při konfiguraci migrace přidám:SetSqlGenerator ( "MySql.Data.MySqlClient", nový myMigrationSQLGenerator ( ));

toto je kód třídy:

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;
    }
}

a toto je kód na Migrations\Configuration.cs :

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

tato práce pro mě.



  1. Jak používat INNER JOIN v SQL

  2. Jak zapsat znaky UTF-8 pomocí hromadného vkládání na SQL Server?

  3. SQLite CHECK omezení

  4. Posílejte a získejte zároveň v php