2009-12-12 2 views
4

SQL Azure에서 작동하도록 Entity Framework를 가져올 수 없습니다. 이 제품이 나입니까, 아니면 호환되지 않는 제품입니까? (VS2008뿐만 아니라 최신 VS2010 베타 2 버전과 함께 EF의 원본 릴리스를 시도했습니다.)Entity Framework는 SQL Azure와 호환됩니까?

이것을 확인하려면 가능한 가장 간단한 시나리오를 만들었습니다. 단일 테이블을 로컬 SQL Server 2008 인스턴스에 추가하십시오. 이 테이블에는 정수 유형의 기본 키와 문자열 열의 두 개의 열이 있습니다. 나는 (1, foobar) 값을 가진 테이블에 하나의 행을 추가한다. 그런 다음 SQL Azure 데이터베이스에 정확히 동일한 설정을 추가했습니다.

콘솔 응용 프로그램을 만들고 로컬 데이터베이스에서 EF 모델을 생성했습니다. 응용 프로그램을 실행하고 모두 좋다, 사소한 쿼리에서 단일 행을 반환 할 수 있습니다. SQL Azure에 연결하기 위해 연결 문자열을 업데이트하면 실패합니다. 문제없이 SQL Azure 데이터베이스에 연결하지만 결과 처리시 쿼리가 실패합니다.

예외 정보를 사용하여 초기 문제를 추적했습니다. 개념 모델에는 내 단일 정의 된 엔터티의 엔터티 집합에 대해 특성 Schema = "dbo"가 설정되어 있습니다. 나는이 속성을 제거하고 지금은 ... 다른 오류와 함께 실패

'테스트'물론 나는 정의 된 엔티티의 이름이며이 반환에서 개체를 만들려고처럼 그렇게 보이는
"Invalid object name 'testModelStoreContainer.Test'." 

결과. 그러나 약간의 알려지지 않은 이유로이 사소한 시나리오를 해결할 수는 없습니다.

정말 근본적인 오류를 만들거나 SQL Azure가 EF와 호환되지 않습니다. 그리고 그것은 저에게 다만 미치게 보인다. 내 WebRole에서 EF를 사용하고 Silverlight 클라이언트 측에서 RIA 서비스를 사용하고 싶습니다.

+0

2015 년 중반 현재 : 현재 버전의 Entity Framework는 SQL Azure와 호환됩니다. – user272735

답변

3

내가 직접 해본 적은 아니지만, EF 팀 구성원이 가지고있는 것임을 확신합니다. Kevin Hoffman.

그래서 아마도 당신은 포팅 과정에서 한 걸음 씩 잘못 들어선 것일 수 있습니다.

로컬 데이터베이스에 대해 수동으로 EDMX (XML)를 업데이트하려고 한 것 같습니다.

이 경우 대부분의 변경 사항은 EDMX (일명 SSDL)의 StorageModel 요소에 필요합니다. 그러나 ConceptualModel (일명 CSDL) 요소를 변경 한 것처럼 들립니다.

내 생각에 SSDL의 dbo 스키마에 대한 모든 참조를 SQL Azure 스키마가있는 스키마로 바꾸기 만하면됩니다.

희망이

알렉스을하는 데 도움이

2

주요 질문에 대답하려면 - 예, 적어도 엔티티 프레임 워크 V4는 SQL 애저와 함께 사용할 수 있습니다 - 솔직히 초기 버전으로 시도하지 않은 (로부터를 .Net Framework 3.5, SP 1).

잠시 동안 전체 프로젝트를 수행하고 경험에 대한 블로그를 작성했습니다. http://www.sanderstechnology.com/?p=9961 잘하면이 도움이 될 것입니다.

1

Microsoft의 Windows Azure 설명서에는 How to: Connect to Windows Azure SQL Database Using the ADO.NET Entity Framework이 포함되어 있습니다.

는 모델을 생성 한 후,이 지침은 엔티티 프레임 워크와 SQL 애저를 사용하는 방법에 대해 설명합니다 :
  1. How to: Migrate a Database by Using the Generate Scripts Wizard (Windows Azure SQL Database)의 지시 사항에 따라 SQL 데이터베이스에 학교 데이터베이스를 마이그레이션합니다. SchoolEFApplication 프로젝트에서

  2. 의 app.config 파일을 엽니 다. 연결 문자열을 변경하여 SQL 데이터베이스에 연결합니다.

    <connectionStrings> 
        <add name="SchoolEntities" 
         connectionString="metadata=res://*/SchoolDataModel.csdl|res://*/SchoolDataModel.ssdl|res://*/SchoolDataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=<provideServerName>.database.windows.net;Initial Catalog=School;Integrated Security=False;User ID=<provideUserID>;Password=<providePassword>;MultipleActiveResultSets=True;Encrypt=True;TrustServerCertificate=False&quot;" 
         providerName="System.Data.EntityClient"/> 
    </connectionStrings> 
    
  3. SQL 데이터베이스에 대해 응용 프로그램을 실행하려면 F5 키를 누릅니다.
관련 문제