0

데이터 상호 작용을위한 프로젝트와 WebUI를위한 프로젝트라는 두 개의 별도 프로젝트가 있습니다.Entity Framework (데이터베이스 우선) 연결 문자열을 찾을 수 없습니다.

UI를 프로젝트의 루트에있는 Web.config의 다음 연결 문자열이 있습니다

<add name="MySiteEntities" connectionString="metadata=res://*/MySite.csdl|res://*/MySite.ssdl|res://*/MySite.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=tcp:**********.database.windows.net,****;initial catalog=MySite;user [email protected]**********;password=*******;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 

EDMX (첫 번째 데이터베이스)에 의해 생성 된 dbcontext은 다음과 같습니다

public partial class MySiteEntities : DbContext 
{ 
    public MySiteEntities() 
     : base("name=MySiteEntities") 
    { 
    } 
... 

때 로컬 엔티티 프레임 워크가 연결 문자열을 찾고 데이터베이스에 성공적으로 연결하는 사이트를 실행합니다.

그러나 게시 할 때 엔티티 프레임 워크가 연결 문자열을 찾지 못하고 대신 UnintentionalCodeFirstException을 던집니다.

내가 여기서 정확히 무엇을 잘못하고 있습니까?

+0

게시 된 응용 프로그램이 올바른 구성 파일을 사용하고 있는지 확인 했습니까? 내 환경에서는 디버그 및 릴리스 구성 파일이 있고 로컬에서 실행하면 디버그 버전이지만 릴리스 됨 (일부는 변경됨)을 게시합니다 – Thelonias

+0

@Ryan 설정 파일의 릴리스와 디버그 버전이 모두 같습니다. . FTP를 통해 연결하고 web.config를 확인하여이 사실을 확인했습니다. web.config는 게시 된 것과 동일한 연결 문자열을가집니다. –

답변

0

디버깅의 첫 번째 단계는 throw되는 예외를 확실히 이해하는 것입니다. MSDN docs에 따르면, UnintentionalCodeFirstException은 다음과 같습니다

컨텍스트가 데이터베이스 첫 번째 또는 모델 우선 모드에서 DbContext 템플릿에서 생성 될 때 발생하고, 다음 코드 우선 모드에서 사용되는 예외입니다. 당신이 데이터베이스 첫 번째 또는 모델 첫째을 사용하여 컨텍스트를 생성,하지만 지금은 어떤 이유로, 문맥이 코드 먼저해야하는데 생각 : 정말 도움이 아니지만, 무슨 일이의 종류에 단서를하지

.

가능한 근거를 설명하는 데 도움이되는 약간의 검색 결과 (Don’t use Code First by mistake). 나는 당신에게 그 책을 읽어주고 당신을 위해 어떤 것이 있는지 알아볼 것을 제안한다.

로컬로 작동하지만 원격으로 작동하지 않기 때문에 가장 좋은 추측은 연결 문자열에 해당하는 EDMX 매핑이 어떤 이유에서든 점프하지 않았기 때문입니다. 소스 컨트롤을 사용하고 있다면 아마도 커밋되지 않았습니다. 이 매핑이 없으면 EF는이 예외를 초래할 코드 우선 전략이됩니다.

+0

문서에서 언급했듯이 "데이터베이스 우선 접근 방식을 사용할 때 OnModelCreating이 호출되지 않습니다." 엔티티 프레임 워크는 코드를 먼저 사용하려고 시도하기 때문에 뭔가 EDMX 매핑에 문제가 있다는 것에 동의합니다. 내 EDMX에 무엇이 잘못 될 수 있는지에 대한 단서가 없지만 계속 찾고 있습니다. –

0

datasouce의 값인 연결 문자열에 "tcp :"가 필요하다고 생각하지 않습니다. 내 푸른 애플 리케이션을위한 구성에 없어, 그리고 잘 작동합니다.

관련 문제