NHibernate: принудительное использование квадратных скобок при экспорте схемы?

Есть ли способ сказать NHibernate использовать квадратные скобки для всех имен таблиц и столбцов (например, [MyColumn]) при генерации экспорта схемы SQL для MS SQL Server? У меня есть устаревшая база данных, которая использует зарезервированные имена для определенных столбцов и запускает сценарий SQL, созданный с использованием NH, из-за этого выдает ошибку.

Я хочу избежать необходимости указывать это отдельно для каждого столбца.

ОБНОВЛЕНИЕ: я использую правильный диалект:

MsSqlConfiguration.MsSql2008.ConnectionString(connectionString)

ОБНОВЛЕНИЕ 2: @UpTheCreek указал мне верное направление - кавычки, которые помогли мне найти ответ в книге "NHibernate в действии" (стр. 76):

Невозможно, кроме цитирования всех имен таблиц и столбцов в обратных галочках, заставить NHibernate везде использовать заключенные в кавычки идентификаторы.

3 ответа

Решение

Более простой подход:

SchemaMetadataUpdater.QuoteTableAndColumns(config)

(Перед сборкой SessionFactory)

Это автоматически процитирует все зарезервированные имена.

Используйте обратные пометки в файлах сопоставления вокруг имен столбцов. NH должен заменить их на правильный символ для вашего диалекта БД (в вашем случае квадратные скобки).

т.е. использовать:

<class name="SomeClass" table="`SomeTable`">

NB - Это не будет работать с апострофом. На большинстве клавиш клавиатура расположена сверху слева.

Вам нужно использовать (или написать) правильный диалект для вашей базы данных

Другие вопросы по тегам