単一のASP.NETアプリケーションでEntity Frameworkを使用する複数バージョンのSQL Server

entity entity-framework sql-server-2000 sql-server-2005

質問

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.を受け取り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がアプリケーションごとに1つのバージョンのSql Serverでしか機能しないことを想像するのは困難です。設定や回避策があるはずです。 1つのWebアプリケーション内で異なるバージョンのSQL ServerとEntity Frameworkを使用するためのソリューションはありますか?

受け入れられた回答

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 
              };

人気のある回答

このリンクは差がSQLサーバー2005年と2008年にあったときに問題を解決するために私を助けましたhttp://kkryczka.wordpress.com/2011/01/03/all-ssdl-artifacts-must-target-the-same- provider-the-providermanifesttoken-2008は、2005年とは異なり、以前に発生したものです。

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

ProviderManifestTokenを2008に変更します。

Microsoftの既知の問題のように見えます。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ