Várias versões do SQL Server usando o Entity Framework em uma única aplicação ASP.NET
-
21-08-2019 - |
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?
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.