Синтаксическая ошибка в инструкции CREATE INDEX с использованием Fluent NHibernate + Oracle Driver - PullRequest
0 голосов
/ 16 декабря 2011

Недавно я столкнулся со следующей ошибкой при попытке создания индекса с использованием сопоставления Fluent NHibernate и Oracle 11g.

 ORA-00969: missing ON keyword

Отображение Colum выглядит следующим образом:

 References(i => i.Revision)
                .Not.Nullable()
                .Index("idx_Revision");

Ошибка не очень удивительна, когда дается сгенерированный оператор SQL:

 create index "DAILYREVISION"idx_Revision on Report."DAILYREVISION" (RevisionId)

(имена таблиц и схем были изменены)

Очевидно, что синтаксис перед именем индекса неверен, нет '.' и имя таблицы вместо имени схемы. Тем не менее, мне кажется, что мало что можно сделать, чтобы помочь ему, не связываясь с БД самостоятельно.

Есть предложения, как решить проблему? Google говорит, что это не очень распространенное исключение, каковы ваши впечатления?

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

Драйверы Oracle NH настолько плохи, или, может быть, это я их неправильно использую?

...