nHibernate 4.1.4没有引用与保留关键字匹配的表名
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nHibernate 4.1.4没有引用与保留关键字匹配的表名相关的知识,希望对你有一定的参考价值。
我正在使用nHibernate 4.1.4 MappingByCode。我的方言是
public class Dialect : NHibernate.Dialect.MsSql2012Dialect
{
protected override void RegisterKeywords()
{
base.RegisterKeywords();
RegisterKeyword("user");
}
}
我的配置是设置config.SetProperty(Environment.Hbm2ddlKeyWords,“keywords”);
我有一个名为User的表。
抛出SQL错误,表示无效的表名User无效。 nHibernate无法将其包装在括号中。
有任何想法吗?
答案
关键字用于不同的目的......
我们需要的是临时表名转义
5.3. SQL quoted identifiers
您可以强制NHibernate在生成的SQL中引用标识符,方法是将表或列名称封装在映射文档的反向标记中。 NHibernate将使用SQL Dialect的正确引用样式(通常是双引号,但SQL Server的括号和mysql的反向标记)。
<class name="LineItem" table="`Line Item`"> <id name="Id" column="`Item Id`"/><generator class="assigned"/></id> <property name="ItemNumber" column="`Item #`"/> ... </class>
即在映射中,我们需要转义表名:
"`user`"
在使用自定义sql语句时,在方言配置中定义的关键字将有助于NH解析器。例如。在formulas
,subselects
。
以上是关于nHibernate 4.1.4没有引用与保留关键字匹配的表名的主要内容,如果未能解决你的问题,请参考以下文章
NHibernate 中的自引用实体给对象引用一个未保存的瞬态实例异常