Недавно я столкнулся со следующей ошибкой при попытке создания индекса с использованием сопоставления 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 настолько плохи, или, может быть, это я их неправильно использую?