0

Je suis en train d'exécuter ce bloc de code à l'aide Devart dotConnect 8.4 + EF6.1:dotConnect: CROSS APPLY est pas pris en charge par Oracle Database 11g

var menus = (from m in dbSet 
      from p in m.RegraAcesso.Perfis 
      from u in p.Usuarios 
      where u.Id == userId && m.Pai.RegraAcesso.Token.Equals(module) 
      select m) 
      .Include(p => p.Pai) 
      .ToList(); 

Mais il jette cette erreur:

Description: Une exception non gérée s'est produite lors de l'exécution de la requête Web en cours. Veuillez consulter la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

Détails de l'exception: System.NotSupportedException: CROSS APPLY n'est pas pris en charge par Oracle Database 11g et versions antérieures. Oracle 12c ou supérieur est requis pour exécuter correctement cette instruction LINQ. Si vous devez exécuter cette instruction avec Oracle Database 11g ou une version antérieure, réécrivez-la pour qu'elle puisse être convertie en SQL, compatible avec la version d'Oracle que vous utilisez.

J'utilise: dotConnect pour Oracle 8.4.171.0 + EF6.1 (Code-First) + Oracle 11g

Il travaillait avec dotConnect pour Oracle 7.5.164.0 + EF4 (Code- First) + Oracle 11g

Répondre

1

Les constructions APPLICATION EXTERNE/CROSS APPLY sont supportées par le serveur Oracle à partir de la version 12c. Notre implémentation dans dotConnect pour Oracle évite la génération de APPLICATION EXTERNE/CROSS APPLY si cela est possible, mais certaines requêtes LINQ ne peuvent pas être traduites sans employer OUTER APPLY/CROSS APPLY. Dans ce cas, vous devez réécrire votre instruction LINQ.

De plus, avec le développement du moteur Entity Framework, les constructions APPLICATION EXTERNE/CROSS APPLY peuvent commencer à être générées dans les cas où les versions précédentes n'étaient pas générées. Ainsi, nous vous recommandons également de créer un petit projet de test et de contacter le support CodePlex: https://entityframework.codeplex.com/

+0

J'ai réécrit ma requête et elle fonctionne maintenant. Mais je ne peux pas le faire dans une seule requête sans le multiple * de * dans mon instruction LINQ initiale, à cause des relations. Merci pour votre soutien. –

Questions connexes