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 - Это не будет работать с апострофом. На большинстве клавиш клавиатура расположена сверху слева.
Вам нужно использовать (или написать) правильный диалект для вашей базы данных