none
CROSS APPLY no soportado por Oracle RRS feed

  • Pregunta

  • Buenas tardes. Estoy traspasando a Oracle 11g una aplicación que utiliza: framework .net 4.0, entity framework y   sqlserver como SGBD. 

    Una vez generado los ficheros ssdl y msdl en su versión Oracle , me encuentro con el problema de que al ejecutar las consultas linq que utiliza la aplicación se produce el error "CROSS APPLY is not supported by Oracle ".

    Consultando en internet no encuentro otra solución que no sea modificar las consultas linq para que no genere dichas instrucciones sql que no soporta oracle o instalar la última versión de oracle 12c.

    ¿Conocéis alguna otra alternativa? Debido al tamaño del proyecto y especificaciones del cliente, en cuanto a oracle, no me resultan válidas las dos opciones anteriores.


    Un saludo y gracias.

    lunes, 28 de julio de 2014 18:52

Todas las respuestas

  • hola

    pero que tipo de consultas linq realizas que requieran CROSS APLLY ?

    quizas podrias hacer las queries linq mas simples para que no utilice estas instrucciones

    que version de EF usas ? es la 5 o 6

    no evalauste si puedes usar EF6

    Problems with Oracle and .NET 4.5 (EF5)

    al menos para probar que en esa version se solucionara el problema

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    lunes, 28 de julio de 2014 20:00
  • Hola. Utilizo EntityFramework 5. El linq que utilizo es muy simple, este es un ejemplo en el que se produce el error. 

     var query = from s in All()

                                   select new
                                {
                                    firstStatus = s.StatusHistory.FirstOrDefault(),
                                };

    (Nota: es solo un ejemplo, las consultas reales son mucho extensas y complicadas)

    Esta instrucción genera un crossapply, al calcular el primer estado de una entidad relacionada (statushistory) de la tabla que estoy consultando.

    También he consultado en internet que al realizar paginación en linq también se produce este tipo de sentencias que no soporta oracle.

    En el siguiente enlace se define los proveedores de datos soportados por EF 6.

    http://msdn.microsoft.com/en-us/data/jj730568#providers

    El problema es que todavía no soporta el de oracle (salvo devart que es de pago y devart comenta en sus foros que es necesario instalar oracle 12c (que requiere licencia, no han sacado la versión express))

    Un saludo y gracias.

    martes, 29 de julio de 2014 18:35