2013-06-10 1 views
0

Je gardais un objet graphique complexe de jeu d'enfant, et je reçois l'erreur suivante à partir du serveur:Breeze Enregistrer - Erreur: CROSS APPLY est pas pris en charge par Oracle

Erreur: CROSS APPLY est pas pris en charge par Oracle

Nous utilisons une base de données Oracle en utilisant le fournisseur Devart. De mes recherches, il semble que la seule solution à ce problème est d'éviter certaines expressions de requête linq. Ces discussions offrent davantage de contexte:

http://forums.devart.com/viewtopic.php?t=18849

http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/ae826dd9-1bab-4f64-a7ee-f082a2177346/

Le dernier fil lié est particulièrement décourageante, comme cela semble être un problème EF lié Microsoft sur lequel ils ont fait sombre pendant un certain temps . Puisque le seul remède pour cela semble être d'éviter des opérateurs/expressions linq spécifiques, je dois demander s'il y a un moyen d'utiliser breeze et d'éviter ces expressions linq fautives. Si ce n'est pas le cas, je suis amené à conclure que breeze est actuellement limité uniquement aux bases de données relationnelles qui sont entièrement supportées par EF, ce qui, d'après mes recherches, est en fait uniquement MS SQL.

En espérant que je me trompe, Mathias

Répondre

0

Si vous voulez utiliser EFContextProvider de Breeze vous êtes alors limité à l'aide d'un back-end EF. Cependant, vous faites d'autres options. La première est que vous pouvez passer vos propres paramètres dans vos méthodes de contrôleur, (voir la méthode EntityQuery.withParameters). Cela peut vous permettre de réécrire votre expression sur le serveur pour éviter les expressions EF qui ne peuvent pas être déployées correctement pour Oracle. En outre, vous pouvez utiliser Breeze avec votre propre fournisseur de contexte personnalisé ou vous pouvez prendre en charge complètement le côté serveur. Le premier est une bonne approche si vous parlez à un autre backend .NET, le second est approprié lorsque vous parlez à un backend non .NET arbitraire.

Nous prévoyons de libérer un backend NHibernate à breeze ainsi qu'un backend Node-MongoDb dans les prochaines semaines pour illustrer ces deux aspects.

Questions connexes