使用保留字作为实体名称

Bob*_*ock 3 c# sql-server nhibernate

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

SQL error - Incorrect syntax near the keyword 'User'.:
Run Code Online (Sandbox Code Playgroud)

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

Vis*_*har 10

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

[User]

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

例:

Select * from tbl where [User] = 'xyz'
Run Code Online (Sandbox Code Playgroud)

  • 虽然这有效,但它不是**在NHibernate中推荐的方法. (2认同)

Die*_*hon 5

在NHibernate中处理这个问题的正确方法是使用SQL引用标识符.

只需将表格或列名称包装在反引号中,Dialect并将使用正确的数据库符号.

为了简化操作,NHibernate提供了一个配置设置,可以为您执行此操作:hbm2ddl.keywords="auto-quote"在xml配置文件中设置,或AutoQuoteKeywords()在使用loquacious时调用.