Я строю свое приложение, используя s # arp lite framework. Одна из моих таблиц называется User. Но User - это ключевое слово SQL Server 2008, поэтому оно вызывает у меня проблемы.
User
Я пытался изменить код для поддержки таблиц, используя ключевые слова 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()) + "]");
Я уже ответил на это в списке рассылки, разместив здесь ответ, чтобы другие могли легко найти (и пункты:)
https://github.com/codai/Sharp-Lite/blob/master/Example/MyStore/app/MyStore.NHibernateProvider/NHibernateInitializer.cs#L19
добавить: db.KeywordsAutoImport = Hbm2DDLKeyWords.AutoQuote;
Должен сделать трюк
Вы также можете сделать это вручную, используя не-DB специфический escape-символ NHibernate: обратный ключ `
В SQL Server вы можете сделать «[Пользователь]», но в Oracle все будет иначе. Если вы используете "` User` ", NHibernate адаптирует его к базе данных, с которой вы сейчас работаете.
Это можно увидеть по этому вопросу: Текущее сопоставление столбцов NHibernate с зарезервированным словом
Это мне кажется смутно знакомым.Никаких обещаний, но вы можете попытаться использовать кавычки вокруг Пользователя, например select * from "User" или указать владельца схемы, например select * from Mydb.User.
Надеюсь, это поможет.Удачи!