使用保留字作为实体名称

时间:2013-03-11 12:53:15

标签: c# sql-server nhibernate

我正在使用带有命名约定的代码的NHibernate映射来映射我的实体。现在我有以下错误

SQL error - Incorrect syntax near the keyword 'User'.:

我知道这是保留字,我想知道如何在约定的映射中使用此名称(User)作为实体名称。

3 个答案:

答案 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`"