0

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

错误: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/

链接的最后一个线程特别令人沮丧,因为这似乎是一个与 Microsoft 相关的 EF 问题,他们已经在这个问题上隐藏了很长一段时间。

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

希望我错了,马蒂亚斯

4

1 回答 1

0

如果您想使用 Breeze 的 EFContextProvider,那么您只能使用 EF 后端。但是,您可以执行其他一些选择。第一个是您可以将自己的参数传递到控制器方法中(请参阅 EntityQuery.withParameters 方法)。这可能允许您在服务器上重写您的表达式,以避免无法为 Oracle 正确翻译的 EF 表达式。

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

我们计划在接下来的几周内发布一个 NHibernate 后端到微风以及一个 Node-MongoDb 后端来说明这两者。

于 2013-06-10T20:00:02.970 回答