3

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

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

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

4

3 回答 3

10

您可以通过将其包裹在方括号中来使用它,因为它是 SQL SERVER 中的保留关键字:

[User]

该词user是 SQL Server 中的保留字。如果您需要将其用作列名,请在其周围加上括号。这适用于碰巧与关键字冲突的所有表名和其他用户定义的名称,

例子:

Select * from tbl where [User] = 'xyz'
于 2013-03-11T12:55:03.583 回答
6

在 NHibernate 中处理这个问题的正确方法是使用SQL Quoted Identifiers

只需将表或列名包含在反引号中,它Dialect就会为您的数据库使用正确的符号。

为了让事情变得更简单,NHibernate 提供了一个配置设置来为您执行此操作:hbm2ddl.keywords="auto-quote"在 xml 配置文件中设置,或者AutoQuoteKeywords()在使用 loquacious 时调用。

于 2013-03-11T14:32:24.983 回答
2

如果括号不起作用,请尝试以下操作:

"`User`"
于 2013-03-11T12:58:25.433 回答