Шаблон Subsonic3 T4 для Oracle (ODP.NET), генерируя странный запрос для Acciverecord (выпуск квадратных кронштейнов)

StackOverflow https://stackoverflow.com/questions/4247397

Вопрос

В настоящее время я пытаюсь использовать Subsonic3 ORM (режим ActiveErecords) с поставщиком данных Oracle (ODP.NET) и шаблоном T4 для доступа к Oracle 10G (ver. 10.2.0.3.0) db.

После борьбы с несколькими незначительными глюками, полученными шаблонами, чтобы построить различный код для меня, мне удалось получить все это для компиляции и запуска, но я бегаю в проблему с запросом, который он генерирует для меня.

Tracing / Seeping через код, я посмотрел на то, какой SQL Query был генерирован и нашел это:

SELECT [t0].[SOME_COLUMN], [t1].[ANOTHER_COLUMN]
FROM [USER].[SOME_TABLE] AS t0
CROSS JOIN [USER].[ANOTHER_TABLE] AS t1
WHERE ([t0].[ID] = [t1].[ID])

И мой код бросил исключение с сообщением Oracle о «отсутствующем выражении: ORA-00936». Поэтому я попытался запустить этот запрос непосредственно на командной строке, и она ошибается с тем же сообщением.

Затем я удалил все квадратные скобки (которые не смотрели на меня прямо на меня), а как «как» ссылки (2-я и 3-я строка) и запрос пробежал штраф.

Может кто-нибудь объяснить мне, почему дозвуковой делает это? Или еще лучше, как это исправить?

Спасибо!

РЕДАКТИРОВАТЬ: Я думаю, я также должен спросить (так как я не эксперт Oracle): являются ли квадратные скобки нормальными / законными? Как насчет оператора «как»?

Это было полезно?

Решение

После некоторого копания я обнаружил, что для поддержки Oracle (и, возможно, DB2) есть вилка из багажника в дозвуковых, что имеет лучшую поддержку этих 2 баз данных. Перейдите по этой ссылке: https://github.com/rally25rs/subsonic-3.0

Этот исходный код, кажется, является реальной сделкой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top