पोस्ट पर पढ़ने के बाद, मुझे एक ही समस्या थी, मैंने तय किया कि MySqlMigrationSqlGenerator की एक क्लास इनहेरिटेंस बनाएं और संरक्षित ओवरराइड MigrationStatement Generate (CreateIndexOperation op) को ओवरराइड करें। , फिर माइग्रेशन के कॉन्फ़िगरेशन पर मैं जोड़ता हूं:SetSqlGenerator ("MySql.Data.MySqlClient", नया myMigrationSQLGenerator ( ));
यह कक्षा का कोड है:
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;
}
}
और यह Migrations\Configuration.cs . पर कोड है :
public Configuration ()
{
AutomaticMigrationsEnabled = false;
SetSqlGenerator ( "MySql.Data.MySqlClient", new myMigrationSQLGenerator ( ) );
}
यह मेरे लिए काम करता है।