nhibernate - 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 错误,无效的表名用户无效。nHibernate 无法将其包裹在括号中。
有任何想法吗?
解决方案
关键字用于不同的目的...
我们需要的是临时表名转义
5.3. SQL 引用标识符
您可以强制 NHibernate 在生成的 SQL 中引用标识符,方法是在映射文档中将表或列名括在反引号中。NHibernate 将为 SQL 方言使用正确的引号样式(通常是双引号,但 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
.
推荐阅读
- java - Java alexa lambda函数在时间/操作上有一些限制吗?
- google-cloud-platform - 无法在谷歌云存储 gui 中打开文件夹
- java - 如何解密存储在 sessionStorage 中的数据
- php - 将任何 json 数据放在带有 $.each 的标签中
- c# - 从 .Net 控制台应用程序调用 AWS lambda
- scala - How to call an InputKey from within a Task in an SBT Plugin
- jquery - jQuery:仅以内联样式更改背景图像上的线性渐变
- c# - 可靠集合应用程序(组装)是特定的吗?
- java - Java:获取 MIME 多部分 BodyPart 的内容
- visual-studio - 为什么 Visual Studio 从 15.7.X -> 15.9.X 升级后无法打开我的项目