Estoy usando Entity Framework en una aplicación web que utiliza SQL Server 2000, 2005 y 2008. Cuando creo un nuevo archivo EDMX usando cualquier cosa que no sea 2008 (versión del primer edmx creado) Recibo error 0172: All SSDL artifacts must target the same provider. The Provider 'MyDatabase' is different from ' MyDatabase ' that was encountered earlier.
Parece que en algún lugar del código la conexión está conectada a un almacén de datos 2008 y cuando comprueba el archivo SSDL y ve un valor ProviderManifestToken diferente arroja este error. Estoy un poco más que frustrado. Es difícil imaginar que EF solo funcione con una sola versión de Sql Server por aplicación. Estoy bastante seguro de que debe haber una configuración o solución alternativa. ¿Alguien tiene una solución para usar diferentes versiones de SQL Server y Entity Framework dentro de una sola aplicación web?Versiones múltiples de SQL Server utilizando Entity Framework en una sola aplicación ASP.NET
Respuesta
Pude lograr esto colocando cada edmx
en un conjunto por separado. Luego, en la cadena de conexión, reemplace todo el res://*/...
con res://NameOfAssembly/...
incluso puedo realizar combinaciones entre los dos modelos de entidad (contrariamente a las afirmaciones que he encontrado en otras fuentes), por ejemplo:
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
};
Veo dónde funcionaría esto. El problema que estaba viendo era por qué no funcionaba en mi entorno. La única solución en ese momento fue configurar todos los ProviderManifestToken a la misma versión. Desde esta vez he migrado todos los dbs a MSSQL 2008. Entonces, ¿por qué esto puede no responder a mi pregunta original? Es una solución aceptable. –
Tuve el mismo problema. Luego implementé todo lo descrito en la sugerencia '@Cogwheel - Matthew Orlando' y funciona perfecto para ambos servidores sql 2005 y 2008. Nota: Hice un nuevo proyecto para acceso a datos a SQL 2008 con nombre diff y luego copié todo el contenido desde el primero y fijó 'ProviderManifestToken' para la versión sql correspondiente y luego reemplazó los espacios de nombres en el segundo proyecto, de acuerdo con el nuevo nombre del ensamblado (no sé si era necesario). Y ahora estoy feliz. – mastak
¿Alguna idea sobre cómo hacer esto al usar el código primero? –
Este enlace me ayudó para resolver el problema cuando había una diferencia en SQL Server 2005 y 2008. http://kkryczka.wordpress.com/2011/01/03/all-ssdl-artifacts-must-target-the-same-provider-the-providermanifesttoken-2008-is-different-from-2005-that-was-encountered-earlier/
Haga clic con el botón derecho en el archivo .edmx y seleccione Abrir con XML Editor. Abrir el archivo Entity Framework .edmx:
Cambiar el ProviderManifestToken a 2008:
Parece que es un problema conocido de Microsoft.
Gracias hombre. Realmente luché con esto. Otro desarrollador siguió agregando a nuestro proyecto con un proveedor diferente. Buen artículo –
Lo que encontré en mi caso fue que teníamos 3 proyectos en una solución, y hemos cambiado ProviderManifestToken en uno de los proyectos A, y esto no me permitió ejecutar incluso el proyecto B desde la misma solución. – franklins
En mi caso tuve que cambiar 2008 tot 2012 y en la parte inferior del archivo se encuentra:
- 1. Compatibilidad con versiones anteriores de SQL Server en Entity Framework?
- 2. Entity Framework y SQL Server Tuning Advisor
- 3. Entity Framework y SQL Server Ver
- 4. Entity Framework y SQL Server Sinónimos
- 5. ASP.NET y Entity Framework en Layered Architecture: utilizando Entity Framework para ORM solo
- 6. Entity Framework y SQL Server 2012 Paging
- 7. Sql Server texto libre a través de Entity Framework
- 8. ¿Cómo maneja Entity Framework los esquemas de SQL Server?
- 9. Seguimiento Sql utilizando Entity Framework 4.1 contra SQL Server CE 4
- 10. Dynamic SQL Query Entity Framework
- 11. Membresía Asp.Net - Proveedores en Entity Framework 4
- 12. Cifrado de SQL Server 2008 R2 - con Entity Framework
- 13. Eliminación de múltiples registros con Entity Framework usando una sola consulta LINQ
- 14. ¿Cómo seleccionar una sola columna con Entity Framework?
- 15. Devolviendo una DataTable utilizando Entity Framework ExecuteStoreQuery
- 16. Debugging Entity Framework Sentencias SQL
- 17. Entity Framework con múltiples edmx
- 18. Entity Framework Asignación DateTimeOffset a SQL Server DateTime
- 19. ASP.NET Entity Framework y cadenas de conexión
- 20. varios comandos en una sola línea en SQL Server 2005
- 21. Creación de la aplicación WebForms en MVC 3 + Entity Framework
- 22. Linq to Sql vs Entity Framework Performance
- 23. Entity Framework y SQL Server agrega espacios en blanco en cadenas?
- 24. ASP.NET MVC con Entity Framework
- 25. Actualización de datos utilizando Entity Framework
- 26. Linq to SQL o la arquitectura de la aplicación Entity Framework for Enterprise ASP.NET MVC?
- 27. MemCached vs Redis for ASP.NET and Entity framework?
- 28. iOS múltiples versiones para una aplicación
- 29. Linq to SQL and Entity Framework Diffrences?
- 30. Buscando ejemplos de aplicaciones ASP.NET MVC con Entity Framework
Un elemento de importancia para mencionar es que estoy en medio de una migración de sql 2000 a sql 2008 y he cambiado las cadenas de conexión y realicé un "Actualizar modelo de base de datos" bastante extraño si modifico todo el SSDL use ProviderManifestToken = "2005" la aplicación funciona. –
Estoy buscando una respuesta a este problema también. Los únicos resultados relevantes de google que he encontrado hasta ahora no entran en profundidad. – Cogwheel