tôi gặp phải vấn đề tương tự, sau khi tôi đọc các bài đăng, tôi đã quyết định tạo một lớp kế thừa củaMySqlMigrationSqlGenerator và ghi đè ghi đè được bảo vệ MigrationStatement Generate (op CreateIndexOperation) , sau đó trên cấu hình di chuyển, tôi thêm: SetSqlGenerator ("MySql.Data.MySqlClient", myMigrationSQLGenerator ()) mới;
đây là mã của lớp:
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;
}
}
và đây là mã trên Migrations \ Configuration.cs :
public Configuration ()
{
AutomaticMigrationsEnabled = false;
SetSqlGenerator ( "MySql.Data.MySqlClient", new myMigrationSQLGenerator ( ) );
}
công việc này đối với tôi.