Nhibernate, как использовать ключевое слово sql server в качестве имени таблицы? - PullRequest
0 голосов
/ 04 января 2012

Я строю свое приложение, используя 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 ]

3 голосов
/ 05 января 2012

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

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

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

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

0 голосов
/ 05 января 2012

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

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

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

0 голосов
/ 04 января 2012

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

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

...