본문 바로가기

.Net

EntityFramework QueryString 문제 해결 - SSDL 아티팩트는 동일한 공급자 문제

  • 에러내용

예외 정보: System.Data.MetadataException: 지정된 스키마가 잘못되었습니다. 오류:
Test.Test.ssdl(2,49) : 오류 0172: 모든 SSDL 아티팩트는 동일한 공급자를 사용해야 합니다. Provider 'System.Data.SqlClient'은(는) 이전에 사용된 'System.Data.SqlClient'과(와) 다릅니다.
Test.Test.ssdl(2,85) : 오류 0169: 모든 SSDL 아티팩트는 동일한 공급자를 사용해야 합니다. ProviderManifestToken '11.1'은(는) 이전에 사용된 '2008'과(와) 다릅니다.

  • 해결

ConnectionString Metadata 내 링크의 "*" 을 해당 DLL 명으로 교체해주면 됩니다.


  • 프로젝트 구조

새로운 웹서비스에서 EntityFramework 를 이용한 EDMX 파일이 생성된 프로젝트를 참조하여
웹서비스내에서 직접 Ling To Entity 를 사용하여 질의하기 위해서는 EntityFramework ConnectionString 사용하기 위해 DLL 명을 사용 하여야 합니다.

- Common.Model.Oracle
  EDMX 파일 위치
- kr.co.test
  웹서비스

  • Common.Model.Oracle 프로젝트의 App.config ConnectionString


<add name="Entities" connectionString="metadata=res://*/Test.Test.csdl|res://*/Test.Test.ssdl|res://*/Test.Test.msl;provider=Oracle.DataAccess.Client;provider connection string=&quot;DATA SOURCE=SOURCE_NAME;PASSWORD=PASSWORD;PERSIST SECURITY INFO=True;USER ID=ID&quot;" providerName="System.Data.EntityClient" />


  • kr.co.test 프로젝트의 Web.Config 파일 내 ConnectionString 


<add name="Entities" connectionString="metadata=res://Common.Model.Oracle/Test.Test.csdl|res://Common.Model.Oracle/Test.Test.ssdl|res://Common.Model.Oracle/Test.Test.msl;provider=Oracle.DataAccess.Client;provider connection string=&quot;DATA SOURCE=SOURCE_NAME;PASSWORD=PASSWORD;PERSIST SECURITY INFO=True;USER ID=ID&quot;" providerName="System.Data.EntityClient" />