0

У меня проблема, с которой я не мог найти ответ по сети.Не удалось запустить Code-First Migration - RenameColumn - с MySql

Я использую CodeFirst EF 4.3.1 Миграции с MySQL.

Мой поставщик MySQL - Devart.

После запуска Add-Migration против существующей базы данных, я получил следующий код:

public partial class ChangeSet_1231 : DbMigration 
{ 
    public override void Up() 
    { 
     RenameColumn(table: "RW_TTaskInstanceProperties", name: "TaskInstance_TaskInstanceId", newName: "TaskInstanceId"); 
    } 

    public override void Down() 
    { 
     RenameColumn(table: "RW_TTaskInstanceProperties", name: "TaskInstanceId", newName: "TaskInstance_TaskInstanceId"); 
    } 
} 

Запуск результатов Update-Database в следующей ошибке:

PM> Update-Database -verbose –startupprojectname "RTDataAccess" 
Using NuGet project 'RTDataAccess'. 
Target database is: 'rsruntime' (DataSource: localhost, Provider: Devart.Data.MySql, Origin: Explicit). 
Applying explicit migrations: [201205311312361_ChangeSet_1231]. 
Applying explicit migration: 201205311312361_ChangeSet_1231. 
ALTER TABLE RW_TTaskInstanceProperties RENAME COLUMN TaskInstance_TaskInstanceId TO TaskInstanceId 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'COLUMN TaskInstance_TaskInstanceId TO TaskInstanceId' at line 2 

Глядя на детали ошибки Я вижу, что RenameColumn переводится в команду MsSql, а не в команду MySql, поэтому неудивительно, что она сообщает о синтаксической ошибке.

Любые идеи, как их решить?

Я знаю, что я могу использовать -script Update-Database, а затем отредактировать сценарий, чтобы соответствовать MySql и запустить его, но я предпочитаю, чтобы сделать команду работы Update-Database ...

Спасибо.

В ответ на вопрос Ладислав по:

Да, я зарегистрировал SQL генератор в DevArt в MySQL для переселений. Мой класс конфигурации выглядит следующим образом:

using Devart.Data.MySql.Entity.Configuration; 
using Devart.Data.MySql.Entity.Migrations; 

internal sealed class Configuration : DbMigrationsConfiguration<RTDataAccess.RTContext> 
{ 
    public Configuration() 
    { 
     AutomaticMigrationsEnabled = false; 

     MySqlEntityProviderConfig.Instance.Workarounds.IgnoreSchemaName = true; 
     var connectionInfo = MySqlConnectionInfo.CreateConnection("Server=xxxx;Port=yyyy;Database=rsruntime;Uid=zzzz;Pwd=wwww;charset=utf8;"); 
     this.TargetDatabase = connectionInfo; 
     this.SetSqlGenerator(connectionInfo.GetInvariantName(), new MySqlEntityMigrationSqlGenerator()); 
    } 

    protected override void Seed(RTDataAccess.RTContext context) 
    { 
    } 
} 
+0

ли вы зарегистрировать SQL генератор DevArt в MySQL для миграции в классе конфигурации миграции? –

+0

Да. Теперь я редактирую свой вопрос, чтобы включить соответствующий код конфигурации. – mayash

+0

Кажется правильным. В таком случае вам следует обратиться в службу поддержки Devart. –

ответ