Breeze Save - Ошибка: CROSS APPLY не поддерживается Oracle
Я сохраняю граф сложных объектов из Breeze и получаю следующую ошибку с сервера:
Ошибка: CROSS APPLY не поддерживается Oracle
Мы используем базу данных Oracle, используя поставщика Devart. Из моего исследования кажется, что единственное решение этой проблемы - избежать определенных выражений запросов linq. Эти потоки предоставляют дополнительный контекст:
http://forums.devart.com/viewtopic.php?t=18849
Последний связанный поток особенно обескураживает, так как это, похоже, проблема Microsoft, связанная с EF, от которой они довольно давно забыли.
Поскольку единственным выходом из этого является избегание определенных операторов / выражений linq, я должен спросить, есть ли способ использовать breeze и избежать этих оскорбительных выражений linq? Если нет, то я пришел к выводу, что breeze в настоящее время ограничен только реляционными базами данных, которые полностью поддерживаются EF, что, по моим исследованиям, фактически является только MS SQL.
Надеюсь, я ошибаюсь, Матиас
1 ответ
Если вы хотите использовать EFContextProvider от Breeze, вы можете использовать EF-сервер. Однако вы делаете некоторые другие варианты. Во-первых, вы можете передавать свои собственные параметры в методы вашего контроллера (см. Метод EntityQuery.withParameters). Это может позволить вам переписать ваше выражение на сервере, чтобы избежать выражений EF, которые не могут быть правильно переведены для Oracle.
Кроме того, вы можете использовать Breeze с вашим собственным провайдером контекста или полностью перейти на серверную часть. Первый - хороший подход, если вы разговариваете с другим бэкэндом.NET, второй уместен, когда вы разговариваете с произвольным не.NET-бэкэндом.
Мы планируем выпустить бэкэнд NHibernate для бриза, а также бэкэнд Node-MongoDb в течение следующих нескольких недель, чтобы проиллюстрировать оба из них.