2016-10-24 3 views
1

NuGet에서 새 마이그레이션 스크립트를 생성하려고합니다. 입력 후 add-migration Initial 다음 응답이 생성됩니다. 참고 : 내 프로젝트는 여전히 컴파일 오류없이 실행 ...부적합 초기화 문자열, 인덱스 0

PM> add-migration Initial 
System.ArgumentException: Format of the initialization string does not conform to specification starting at index 0. 
    at System.Data.Common.DbConnectionOptions.GetKeyValuePair(String connectionString, Int32 currentPosition, StringBuilder buffer, Boolean useOdbcRules, String& keyname, String& keyvalue) 
    at System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable synonyms, Boolean firstKey) 
    at System.Data.Common.DbConnectionOptions..ctor(String connectionString, Hashtable synonyms, Boolean useOdbcRules) 
    at System.Data.Common.DbConnectionStringBuilder.set_ConnectionString(String value) 
    at MySql.Data.MySqlClient.MySqlConnectionStringBuilder..ctor(String connStr) 
    at MySql.Data.MySqlClient.MySqlConnection.set_ConnectionString(String value) 
    at MySql.Data.MySqlClient.MySqlConnection..ctor(String connectionString) 
    at MySql.Data.Entity.MySqlConnectionFactory.CreateConnection(String connectionString) 
    at System.Data.Entity.Internal.LazyInternalConnection.Initialize() 
    at System.Data.Entity.Internal.LazyInternalConnection.get_Connection() 
    at System.Data.Entity.Internal.LazyInternalContext.get_Connection() 
    at System.Data.Entity.Infrastructure.DbContextInfo..ctor(Type contextType, DbProviderInfo modelProviderInfo, AppConfig config, DbConnectionInfo connectionInfo, Func`1 resolver) 
    at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration, DbContext usersContext, DatabaseExistenceState existenceState, Boolean calledByCreateDatabase) 
    at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration) 
    at System.Data.Entity.Migrations.Design.MigrationScaffolder..ctor(DbMigrationsConfiguration migrationsConfiguration) 
    at System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.Run() 
    at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) 
    at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) 
    at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner) 
    at System.Data.Entity.Migrations.Design.ToolingFacade.Scaffold(String migrationName, String language, String rootNamespace, Boolean ignoreChanges) 
    at System.Data.Entity.Migrations.AddMigrationCommand.Execute(String name, Boolean force, Boolean ignoreChanges) 
    at System.Data.Entity.Migrations.AddMigrationCommand.<>c__DisplayClass2.<.ctor>b__0() 
    at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command) 
Format of the initialization string does not conform to specification starting at index 0. 

내 Google 클라우드 SQL 서버에 conenction을 설정하기 위해이 질문에 가이드를 다음되었습니다 Dynamic MySQL database connection for Entity Framework 6

내 연결 문자열 :

<add name="CCGamesGCloud.EntityFramework.Context" connectionString="Server=******;Database=*****;Uid=****;Pwd=*********" 
    providerName="MySql.Data.MySqlClient" /> 

내 EF 문자열 :

<entityFramework> 
    <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" /> 
    <providers> 
     <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" /> 
    </providers> 
    </entityFramework> 

컨텍스트 클래스 :

public class Context : DbContext 
{ 
    public Context() : base("CCGamesGCloud.EntityFramework.Context") 
    { 

    } 

    public virtual DbSet<Developer> Developers { get; set; } 
    //... etc. etc... for all DBSets 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 

     modelBuilder.Entity<Developer>(); 
     // other calls... etc here 
    } 
} 

의 Web.config XML 첫 번째 줄 :

<?xml version="1.0" encoding="utf-8"?> 

나는 해결책 참조에 필요한 MySQL의 DLL 년대를 추가했습니다. 이 주제에 대한 다른 많은 질문과 같이 문자열에 맞춤법 오류가 표시되지 않습니다.

+0

당신은'context' 클래스를 보일 수 있는가? – Sampath

+0

요청 당 추가되었습니다. – Chris

+0

'web.config' 파일의 첫 번째 줄을 보여줄 수 있습니까? 이 말은 ' Sampath

답변

0

로컬 SQL 인스턴스를 대상으로 마이그레이션 설정이 초기화되었습니다. 내가 사용하고 있던 연결 문자열이 일반 SQL이 아닌 MySQL 프로토콜 용 이었기 때문에 수용 할 수없는 문자열 형식 오류가 발생했습니다.

나는 특히 내 사용자 지정 컨텍스트를 대상으로 마이그레이션을 다시 사용하도록 설정했습니다. 이렇게하면 Migrations에서 MySQL 컨텍스트와 연결 문자열을 기다리고 있으므로 오류가 발생하지 않습니다.

내가 사용 :

Enable-Migrations -ContextTypeName MYCONTEXT -Force 
관련 문제