Syntax Highlighter

jueves, 9 de junio de 2011

Error de Entity Framework con SQL Server 2000

ErrorHoy toca una de cal con Entity Framework 4. Y es que trabajar con un entorno de desarrollo distinto del que luego te puedes encontrar en producción tiene su riesgo (que levante la mano cuántos tienen instalado Visual Studio sobre Windows Server). Una solución es trabajar con máquinas virtuales que simulen al máximo el entorno que te vas a encontrar en producción, pero muchas veces es inviable por los recursos y el tiempo necesario para gestionar todas las combinaciones que tenemos en nuestros clientes.

El error: al pasar del entorno de desarrollo a producción, nos encontramos con un error de EF4 al resolver una consulta. Un ejemplo de excepción es:

Exception Details: System.Data.SqlClient.SqlException: Incorrect syntax near '('.

Al usar IntelliTrace para ver dónde estaba el error, vemos la sentencia SQL que está montando EF para resolver una llamada “FirstOrDefault”:

Error Top 1

Al intentar ejecutar esta sentencia en nuestro entorno de desarrollo sobre SQL Server 2008, no da ningún problema. Sin embargo, al ejecutarla sobre SQL Server 2000, da un error de sintaxis en “SELECT TOP(1)”.

Esto ocurre porque el mapping del modelo se ha realizado usando SQL Server 2008 en vez de 2000, con lo que el motor de EF usa T-SQL que no es soportado por la versión en producción.

Para solucionarlo rápidamente, simplemente abrimos el modelo .edmx con el visor XML y editamos el atributo “ProviderManifestToken” cambiando el valor “2008” por “2000”.

Cambiar valor 2008 a 2000

Compilamos y listo!!!!

Espero que sirva de ayuda. Un saludo.

1 comentario:

  1. Los problemas como comentas se dan mucho en el SQL server 2000 pero estos son solucionados con las nuevas herramientas.

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...