У меня проблема, с которой я не мог найти ответ по сети.Не удалось запустить 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)
{
}
}
ли вы зарегистрировать SQL генератор DevArt в MySQL для миграции в классе конфигурации миграции? –
Да. Теперь я редактирую свой вопрос, чтобы включить соответствующий код конфигурации. – mayash
Кажется правильным. В таком случае вам следует обратиться в службу поддержки Devart. –