2013-04-01 2 views
4

하늘색 포털에서 데이터베이스를 사용하여 웹 앱을 게시하는 단계를 수행했습니다. 내가 게시 할 때 Azure 데이터베이스 게시 첫 번째 연결 문자열이 작동하지 않습니다.

그러나,이 오류 메시지가 : 코드 데이터베이스 우선 및 모델 코드 우선 모드에서 사용하는 경우 먼저 개발이 제대로 작동하지 않을 수 있습니다에 대한 T4 템플릿을 사용하여 생성

. 데이터베이스 우선 또는 모델을 계속 사용하려면 응용 프로그램을 실행하는 의 구성 파일에 엔터티 프레임 워크 연결 문자열이 지정되어 있는지 확인하십시오. 에서 생성 된 클래스를 사용하려면 데이터베이스 우선 또는 코드 우선, 코드 사용 먼저 특성 또는 DbModelBuilder API를 사용하여 구성을 추가 한 다음 이 예외를 throw하는 코드를 제거합니다.

의 Web.config에서 내 연결 문자열이에 의해 수정 된 후 게시 : (edmx에 의해 생성)

<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" /> 

내 상황 :

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

을 내가 becuase 매우 혼란 스러워요 엔티티 프레임 워크가 먼저 데이터베이스가 아닌 코드를 먼저 사용하려고하는 것처럼 보입니다.

업데이트 : 로컬로 동일한 연결 문자열을 사용해 보았는데 웹 응용 프로그램이 정상적으로 작동하는 것 같습니다. 웹 응용 프로그램은 원격 데이터베이스에 잘 연결합니다. 하늘에 퍼블리시 할 때만 실패합니다.

답변

0

이 있어야한다 :

 <connectionStrings> 
      <add name="MyDatabaseModelEntities" 
         connectionString="metadata=res://*/MyDBModel.csdl|res://*/MyDBModel.ssdl|res://*/MyDBModel.msl; 
         provider=System.Data.SqlClient; 
         provider connection string=&quot; 
         Data Source=<provideServerName>.database.windows.net; 
         Initial Catalog=MyDatabase; 
         Integrated Security=False; 
         User ID=<provideUserID>; 
         Password=providePassword>; 
         MultipleActiveResultSets=True; 
         Encrypt=True; 
         TrustServerCertificate=False&quot;" 
         providerName="System.Data.EntityClient"/> 
     </connectionStrings> 
+1

연결 문자열에 나타나는 유일한 차이점은 Encrypt = true, TrustServerCertificate = false입니다. 나는 이것을 시도하고 그것은 작동하지 않았다. 내가 놓친 게 있니? –

4

Entity framework work locally but not on azure에 비슷한 질문에 대한 내 대답을 참조하십시오.

내가 실수 한 경우 ""이 발생했습니다. Azure 배포 된 응용 프로그램은 web.config에서 연결 문자열 "MySiteEntities"를 찾지 못합니다. 대신 Azure 웹 사이트 (또는 Cloud Service 등)를 만들 때 Azure SQL 데이터베이스를 만들고 연결 문자열에 정확한 이름 인 "MySiteEntities"를 지정했습니다. 이 후자의 연결 문자열은 모델/데이터베이스 우선 메타 데이터 참조가없는 "일반"연결 문자열이므로 EF에서 코드 첫 연결로 처리되므로 충돌에 대해 불만이 제기됩니다. 이 구별에 대한 설명은 Code First vs. Database First을 참조하십시오.

+0

예, 이것이 제 문제였습니다. Azure와 web.config에서 동일한 연결 문자열 이름을 구성했습니다. 나는 Azure에서 이름을 바꾸고 릴리스 코드를 Azure에 배포 할 때 VS2012의 Web.Release.config 변환을 사용하여 문자열을 변경했습니다. 모든 것이 잘되고 내 EF 데이터베이스에 연결할 수 있습니다. – RMS2

0

내 로컬 web.config에서 연결 문자열을 remote (Azure)로 변경 한 다음 게시 중에 설정된 모든 연결 문자열을 제거하고 web.config를 게시합니다. 그것은 web.config 제거를 다시 작성합니다. 그런 다음 로컬 web.config의 연결 문자열을 로컬 연결로 반환하십시오. 지금은 잘 작동합니다.

관련 문제