我正在使用带有命名约定的代码的NHibernate映射来映射我的实体。现在我有以下错误
SQL error - Incorrect syntax near the keyword 'User'.:
我知道这是保留字,我想知道如何在约定的映射中使用此名称(User)作为实体名称。
答案 0 :(得分:10)
您可以将它包装在方括号中,因为它是SQL SERVER中的保留关键字:
[User]
单词user
是SQL Server中的reserved word。如果需要将其用作列名,请在其周围放置括号。这适用于碰巧与关键字冲突的所有表名和其他用户定义的名称
示例:
Select * from tbl where [User] = 'xyz'
答案 1 :(得分:5)
在NHibernate中处理此问题的正确方法是使用SQL Quoted Identifiers。
只需将表格或列名称包装在反引号中,Dialect
将使用正确的数据库符号。
为了简化操作,NHibernate提供了一个配置设置,可以为您执行此操作:在xml配置文件中设置hbm2ddl.keywords="auto-quote"
,或在使用loquacious时调用AutoQuoteKeywords()
。
答案 2 :(得分:2)
如果括号不起作用,请尝试:
"`User`"