Pergunta

Eu estou usando o Entity Framework em uma aplicação web que utiliza servidor SQL 2000, 2005 e 2008. Quando eu criar um novo arquivo EDMX usando nada além de 2008 (versão da primeira edmx criado) recebo error 0172: All SSDL artifacts must target the same provider. The Provider 'MyDatabase' is different from ' MyDatabase ' that was encountered earlier. parece que em algum lugar no código a conexão é ligado a um armazenamento de dados de 2008 e quando se verifica o arquivo SSDL e vê um valor ProviderManifestToken diferente ele lança este erro. Eu sou um pouco mais do que frustrado. É difícil imaginar que EF só irá funcionar com uma única versão do SQL Server por aplicação. Estou bastante certo de que deve haver um ajuste ou solução alternativa. Alguém tem uma solução para usar diferentes versões do servidor SQL eo Entity Framework em um único aplicativo web?

Foi útil?

Solução

Eu era capaz de conseguir isso colocando cada edmx em um conjunto separado. Em seguida, na cadeia de conexão, substitua todo o res://*/... com res://NameOfAssembly/...

Eu mesmo pode executar junções entre os dois modelos entidade (ao contrário do alegado I encontrados em outras fontes), por exemplo:.

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

Outras dicas

Este link me ajudou a resolver o problema quando havia uma diferença no servidor SQL 2005 e 2008. http://kkryczka.wordpress.com/2011/01/03/all-ssdl-artifacts-must-target-the-same-provider-the- providermanifesttoken-2008--é diferente-de-2005-que-foi-encontrou-anteriormente /

Botão direito do mouse sobre o arquivo edmx e selecione Abrir com o Editor de XML. Abrir arquivo Entity Framework edmx:

Alterar o ProviderManifestToken a 2008:

olha como seu um problema conhecido da Microsoft.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top