Breeze Save - 错误:Oracle不支持CROSS APPLY

时间:2013-06-10 01:13:26

标签: breeze

我正在从breeze中保存一个复杂的对象图,我从服务器收到以下错误:

错误:Oracle不支持CROSS APPLY

我们正在使用Devart提供程序使用Oracle数据库。从我的研究来看,似乎这个问题的唯一解决方案是避免某些linq查询表达式。这些线程提供了进一步的上下文:

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

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

链接的最后一个线程特别令人沮丧,因为这似乎是微软相关的EF问题,他们已经在很长一段时间内一直处于黑暗状态。

因为对此的唯一补救措施似乎是避免使用特定的linq运算符/表达式,所以我必须问是否有任何方法可以使用breeze并避免这些违规的linq表达式?如果没有,我会得出结论,微风目前仅限于EF完全支持的关系数据库,我的研究实际上只是MS SQL。

希望我错了, 的Mathias

1 个答案:

答案 0 :(得分:0)

如果您想使用Breeze的EFContextProvider,那么您只能使用EF后端。但是你做了一些其他的选择。首先,您可以将自己的参数传递给控制器​​方法,(请参阅EntityQuery.withParameters方法)。这可能允许您在服务器上重写表达式,以避免无法为Oracle正确转换的EF表达式。

此外,您可以将Breeze与您自己的自定义上下文提供程序一起使用,也可以完全接管服务器端。第一种方法是一种很好的方法,如果你正在与另一种.NET后端进行通信,第二种方法适用于与任意非.NET后端进行通信时。

我们计划在未来几周内将NHibernate后端发布为微风以及Node-MongoDb后端,以说明这两者。