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