2017-10-10 7 views
0

buildserver에서 코드 첫 번째 마이그레이션에 대한 데이터베이스 업데이트를 시도하고 있습니다.Migration.exe -connectionString 인수가 CI 서버에서 EF 마이그레이션을 수행하지 않습니다.

EF 6 도구에서 migration.exe를 사용하고 기타를 전달하는 방법에 대해 읽었습니다. 컨텍스트 및 연결 설정을 migration.exe 호출에 대한 인수로 사용합니다.

저는 연결 문자열, 기본 카탈로그 및 보안을 직접 인수로 지정할 수 있기를 원합니다.

내 연결 문자열 등을 지정했을 때 문제가 발생합니다. migrate.exe Ef.Data.DLL/ConnectionString : "데이터 원본 = myserver; 초기 카탈로그 = MyCatalog; 통합 보안 = true"/ connectionProviderName : System .Data.SqlClient/자세한

다음 migrate.exe 던져 및 오류합니다 : System.InvalidOperationException : 이름이 'MyContext'없음 연결 문자열

내 문맥과 같은 코드에 정의 된 응용 프로그램 구성 파일에서 찾을 수 없습니다 : public MyContext() : base ("name = MyContext")

그래서 "MyContext"연결 문자열이 여전히 App.Config 및 web.config를 사용하려고하는 것처럼 보이지만,이 정보를 인수로 전달할 필요가 없습니다.

다른 args와 함께 ConnectionStringName을 인수 (-connectionStringName : MyContext)로 지정하려고하면 어떻게됩니까? 내가 얻을 : 오류 :/connectionStringName 또는/connectionString 중 하나만 지정할 수 있습니다.

저는 여기 꽤 붙어 있습니다. Cant가이 문제를 해결하는 것 같습니다. 어떤 아이디어든지 높게 평가된다.

+0

또한 매개 변수로 공급자를 추가해보십시오.'/ connectionProviderName : "System.Data.SqlClient"' –

+0

이미 거기에있어 도움이되지 않습니다. –

답변

1

오늘 같은 문제가있었습니다. 나를 위해, 그것은 이것에서, 나의 상황에 맞는 생성자를 변경하여 분류되었다 :

public RootContext() : base("name=MyContext") 

이에 :

public RootContext() : this("MyContext") 

값이에서 발견 할 수있는 컨텍스트 이름 앞에 name=을 갖는 그렇지 않으면 config를 실행하면 오류가 발생합니다. Visual Studio에서 배포 할 때만 유용합니다. 문자열이 일치하지 않으면 오류가 발생하지만 명령 줄과 다른 환경에서 마이그레이션을 자동화하려고 할 때 유용하지 않기 때문입니다.

이렇게 변경하면 VS에서 마이 그 레이션을 실행할 때주의하십시오. 문자열이 일치하지 않으면 행복하게 계속 진행하고 "MyContext"라는 LocalDB에 새 데이터베이스를 만듭니다 그랬어!