Nhibernate, как использовать ключевое слово sql server в качестве имени таблицы?

Я строю свое приложение, используя s#arp lite framework. Одна из моих таблиц называется User, Но User является ключевым словом SQL Server 2008, так что это вызывает у меня проблемы.

Я пытался изменить код для поддержки таблиц, используя ключевые слова SQL Server, но не смог заставить его работать.

Вот код

https://github.com/codai/Sharp-Lite/blob/master/Example/MyStore/app/MyStore.NHibernateProvider/Conventions.cs

Строка 32: я изменил его на следующий код

classCustomizer.Table("[" + Inflector.Net.Inflector.Singularize(type.Name.ToString()) + "]");

3 ответа

Решение

Я уже ответил на это в списке рассылки, разместив ответ здесь, чтобы другие могли легко найти (и пункты:)

https://github.com/codai/Sharp-Lite/blob/master/Example/MyStore/app/MyStore.NHibernateProvider/NHibernateInitializer.cs#L19

добавить: db.KeywordsAutoImport = Hbm2DDLKeyWords.AutoQuote;

Должен сделать трюк

Это кажется мне смутно знакомым. Никаких обещаний, но вы можете попытаться использовать кавычки вокруг пользователя, например select * из "User" или указать владельца схемы, например select * из Mydb.User.

Надеюсь это поможет. Удачи!

Вы также можете сделать это вручную, используя не-DB специфический управляющий символ NHibernate: обратный ключ `

В SQL Server вы можете сделать "[Пользователь]", но в Oracle все будет иначе. Если вы используете "`User`", NHibernate адаптирует его к базе данных, с которой вы сейчас работаете.

Это можно увидеть по этому вопросу: Свободное отображение столбцов NHibernate с зарезервированным словом

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