Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kerangka kerja entitas dengan migrasi database mysql gagal, saat membuat indeks

saya memiliki masalah yang sama, setelah saya membaca posting, saya memutuskan untuk membuat kelas mewarisi MySqlMigrationSqlGenerator dan menimpa protected override MigrationStatement Generate ( CreateIndexOperation op ) , kemudian pada konfigurasi migrasi saya menambahkan :SetSqlGenerator ( "MySql.Data.MySqlClient", new myMigrationSQLGenerator ( ) );

ini kode kelasnya:

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

dan ini adalah kode di Migrations\Configuration.cs :

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

ini berhasil untuk saya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memilih semua catatan dari satu tahun yang lalu sampai sekarang

  2. Layar tidak dapat terhubung ke mySql

  3. Bagaimana saya bisa menampilkan hasil kueri MySQL dalam format CSV?

  4. MYSQL DAN kueri untuk memuaskan pada kolom yang sama

  5. PHP isset() dengan beberapa parameter