단일 ASP.NET 애플리케이션에서 엔티티 프레임 워크를 사용하여 여러 버전의 SQL Server
-
21-08-2019 - |
문제
SQL Server 2000, 2005 및 2008을 사용하는 웹 애플리케이션에서 엔티티 프레임 워크를 사용하고 있습니다. 2008 (최초의 EDMX 버전)을 사용하여 새 EDMX 파일을 만들 때받을 수 있습니다. error 0172: All SSDL artifacts must target the same provider. The Provider 'MyDatabase' is different from ' MyDatabase ' that was encountered earlier.
코드 어딘가에 연결은 2008 데이터 스토어에 연결되어 있으며 SSDL 파일을 확인하고 다른 공급자 ManifestToken 값을 볼 때이 오류가 발생합니다. 나는 좌절하는 것 이상입니다. EF가 응용 프로그램 당 단일 버전의 SQL Server에서만 작동한다고 상상하기는 어렵습니다. 설정이나 해결 방법이 있어야한다고 확신합니다. 단일 웹 애플리케이션 내에 다른 버전의 SQL Server와 엔터티 프레임 워크를 사용할 수있는 솔루션이 있습니까?
해결책
나는 각각을 넣어서 이것을 달성 할 수 있었다 edmx
별도의 어셈블리에서. 그런 다음 연결 문자열에서 모든 것을 교체하십시오 res://*/...
~와 함께 res://NameOfAssembly/...
두 엔티티 모델 (다른 출처에서 찾은 주장과는 달리) 사이에 조인을 수행 할 수도 있습니다.
var oneDb = new Entities2000();
var otherDb = new Entities2005();
var results = from one in oneDb.SomeSet
join other in otherDb.OtherSet
on one.Property equals other.Property
select new {
SomeProp = one.SomeProp,
OtherProp = other.OtherProp
};
다른 팁
이 링크는 SQL Server 2005와 2008에 차이가 있었을 때 문제를 해결하는 데 도움이되었습니다.http://kkryczka.wordpress.com/2011/01/03/all-ssdl-artifacts-must-target-the-provider-the-providermanifesttoken-2008-is-different-from-2005- 직접적 인/
.edmx 파일을 마우스 오른쪽 버튼으로 클릭하고 XML 편집기로 열기를 선택하십시오. 엔티티 프레임 워크 열기 .EDMX 파일 :
제공자 관리를 2008으로 변경하십시오.
Microsoft에게 알려진 문제처럼 보입니다.