0

웹상에서 답변을 찾을 수없는 문제가 있습니다.My First Name Migration - RenameColumn - My SQL을 사용하지 못했습니다.

MySQL을 사용하여 CodeFirst EF 4.3.1 마이그레이션을 사용하고 있습니다.

MySQL 공급자가 Devart입니다. 다음과 같은 오류가 업데이트 - 데이터베이스 결과를 실행

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

:

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은 MySql 명령 대신 MsSql 명령으로 변환되므로 구문 오류에 대해보고하는 것은 당연한 일입니다.

어떻게 해결할 수 있습니까?

나는 그때 MySQL을 맞게하고 실행하는 스크립트를 편집, 업데이트-데이터베이스 -script를 사용할 수 알지만, 업데이트-Database 명령 작업 ...

감사를 만들기 위해 선호합니다. 라디의 질문에 대한 응답으로

:

예, 나는 MySQL의 마이그레이션에 대한 Devart의 SQL 발생기를 등록했다. 내 구성 클래스는 다음과 같습니다

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

당신이 당신의 마이그레이션 구성 클래스의 MySQL의 마이그레이션을위한 Devart의 SQL 발생기를 등록 했습니까? –

+0

예. 내 질문을 편집하여 관련 구성 코드를 포함시킵니다. – mayash

+0

올바른 것 같습니다. 이 경우 Devart의 지원 부서에 연락해야합니다. –

답변