11

SQL Server 2000、2005、および2008を利用するWebアプリケーションでEntity Frameworkを使用しています。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ファイルをチェックして別のProviderManifestToken値を確認​​すると、このエラーがスローされます。私は少しイライラしています。EFがアプリケーションごとに単一バージョンのSQLServerでのみ機能することを想像するのは難しいです。設定または回避策が必要だと私はかなり確信しています。単一のWebアプリケーション内で異なるバージョンのSQLサーバーとEntityFrameworkを使用するソリューションを持っている人はいますか?

4

2 に答える 2

24

edmxそれぞれを別々のアセンブリに入れることで、これを達成することができました。次に、接続文字列で、すべてres://*/...res://NameOfAssembly/...

2つのエンティティモデル間で結合を実行することもできます(他のソースで見つけたクレームとは異なります)。例:

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 
              };
于 2009-10-16T16:36:01.450 に答える
5

このリンクは、SQL Server 2005と2008に違いがあった場合に、問題を解決するのに役立ちました 。http://kkryczka.wordpress.com/2011/01/03/all-ssdl-artifacts-must-target-the-same-プロバイダー-プロバイダーマニフェストトークン-2008-is-different-from-2005-that-was-encountered-early/

.edmxファイルを右クリックし、[XMLエディターで開く]を選択します。EntityFrameworkの.edmxファイルを開きます。

ProviderManifestTokenを2008に変更します。

Microsoftの既知の問題のようです。

于 2011-01-27T21:11:43.403 に答える