2012-11-21 3 views
1

MySql 데이터베이스에 대해 엔티티 프레임 워크 4.4.0 (EF5) 코드의 첫 번째 마이 그 레이션을 수행했지만 추가 마이그레이션 명령을 실행할 때 항상 dbo가 prepended 됨 그래서 같은 테이블 이름에 :Entity Framework 4.4.0 코드 처음으로 MySql에서 마이 그 레이션하면 새 테이블에 dbo가 계속 추가됨

CreateTable(
      "dbo.Fields", 
      c => new 
       { 
        FieldId = c.Int(nullable: false, identity: true), 
        FieldTypeId = c.Int(nullable: false), 
        Name = c.String(nullable: false, unicode: false), 
        Description = c.String(unicode: false), 
        CodeList = c.String(unicode: false), 
        Mask = c.String(unicode: false), 
       }) 
      .PrimaryKey(t => t.FieldId) 
      .ForeignKey("dbo.FieldTypes", t => t.FieldTypeId, cascadeDelete: true) 
      .Index(t => t.FieldTypeId); 

내가 Devart 데이터베이스 제공자를 사용하고 있는데 내 마이그레이션 구성 클래스는 다음과 같습니다

internal sealed class Configuration : DbMigrationsConfiguration<mydbcontext> 
{ 
    public Configuration() 
    { 
     // Create a custom connection to specify the database and set a SQL generator for MySql. 
     var connectionInfo = 
      MySqlConnectionInfo.CreateConnection("<<myconnectionstring>>"); 

     TargetDatabase = connectionInfo; 

     SetSqlGenerator(connectionInfo.GetInvariantName(), new MySqlEntityMigrationSqlGenerator()); 

     var config = MySqlEntityProviderConfig.Instance; 
     config.Workarounds.IgnoreSchemaName = true; 

     AutomaticMigrationsEnabled = false; 
    } 

    protected override void Seed(CloudDataSetDbContext context) 
    { 

    } 
} 

을 IgnoreSchemaName = 사실은 고려되지 않는 몇 가지 이유.

은 그래서 같이 web.config 파일에 Devart의 데이터베이스 공급자를 추가 :

<system.data> 
<DbProviderFactories> 
    <remove invariant="Devart.Data.MySql" /> 
    <add name="dotConnect for MySQL" invariant="Devart.Data.MySql" description="Devart dotConnect for MySQL" type="Devart.Data.MySql.MySqlProviderFactory, Devart.Data.MySql, Version=6.80.350.0, Culture=neutral, PublicKeyToken=09af7300eec23701" /> 
</DbProviderFactories> 

그리고 나는 또한 Devart는과 같이이 필요하기 때문에 어셈블리 리디렉션 추가 :

<dependentAssembly> 
    <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" /> 
    <bindingRedirect oldVersion="4.3.1.0" newVersion="4.4.0.0" /> 
    </dependentAssembly> 

아무도 나를 도울 수 있습니까? Thx, 스티븐.

답변

0

SetSqlGenerator를 호출하기 전에 Singleton 구성 옵션을 구성 해보십시오. 발전기가 설치되었을 때와 같이 현재 설정을 사용한다는 생각이 들지만 나중에 변경하면 발전기의 동작이 변경되지 않습니다.

0

마이그레이션 콘텐츠의 코드 생성에는 영향을주지 않습니다 (코드 생성은 Microsoft에서 수행합니다). 마이그레이션 코드를 기반으로 DDL을 생성합니다. DDL을 생성 할 때 코드에 지정된 "dbo"스키마 이름은 무시됩니다.

+1

정보 용 Thx 그런데 DotConnect를 버전 7.2.122로 업그레이드하여 작동시키고 있습니다. –

+0

문제가 해결되었음을 기쁘게 생각합니다. – Devart

0

DotConnect를 새로운 7.2.122 버전으로 업그레이드하여 문제를 해결했습니다. __Migrations 테이블이 앞에 dbo없이 만들어 지므로 insert 문이 작동합니다.