Nhibernate, как использовать ключевое слово sql server в качестве имени таблицы?
Я строю свое приложение, используя s#arp lite framework. Одна из моих таблиц называется User
, Но User
является ключевым словом SQL Server 2008, так что это вызывает у меня проблемы.
Я пытался изменить код для поддержки таблиц, используя ключевые слова SQL Server, но не смог заставить его работать.
Вот код
Строка 32: я изменил его на следующий код
classCustomizer.Table("[" + Inflector.Net.Inflector.Singularize(type.Name.ToString()) + "]");
3 ответа
Я уже ответил на это в списке рассылки, разместив ответ здесь, чтобы другие могли легко найти (и пункты:)
добавить: db.KeywordsAutoImport = Hbm2DDLKeyWords.AutoQuote;
Должен сделать трюк
Это кажется мне смутно знакомым. Никаких обещаний, но вы можете попытаться использовать кавычки вокруг пользователя, например select * из "User" или указать владельца схемы, например select * из Mydb.User.
Надеюсь это поможет. Удачи!
Вы также можете сделать это вручную, используя не-DB специфический управляющий символ NHibernate: обратный ключ `
В SQL Server вы можете сделать "[Пользователь]", но в Oracle все будет иначе. Если вы используете "`User`", NHibernate адаптирует его к базе данных, с которой вы сейчас работаете.
Это можно увидеть по этому вопросу: Свободное отображение столбцов NHibernate с зарезервированным словом