NHibernate bug sql 生成器

Posted

技术标签:

【中文标题】NHibernate bug sql 生成器【英文标题】:NHibernate bug sql generator 【发布时间】:2009-09-06 10:29:49 【问题描述】:

我有一个名为Group的类

我尝试测试配置:

var cfg = new Configuration();
cfg.Configure();

cfg.AddAssembly(typeof (Group).Assembly);

new SchemaExport(cfg).Execute(true, true, false);

当我调试这个时,我得到以下 sql:

 create table Group (
        ID INT IDENTITY NOT NULL,
       Name NVARCHAR(255) null,
       CreatedDate DATETIME null,
       primary key (ID)
    )

我记得,Group 键是为 Group By

保留的

那么为什么 NHibernate 不使用 Group 之类的引号作为表名呢?

顺便说一句,我使用的是 Sql Server 2005 和 NHibernate 2.1

【问题讨论】:

【参考方案1】:

如果您使用保留关键字作为对象名称,则应使用 DBMS 特定符号对其进行标记。例如,如果您使用的是 SQL Server,则应将其放在 [] 中并使用 ` 表示 mysql。 在此示例中,您应该编写(假设您使用的是 SQL 服务器):

<class name="Group" table="[Group]"> 

【讨论】:

在NHibernate中,你可以使用`,它会被翻译成合适的数据库引用机制。

以上是关于NHibernate bug sql 生成器的主要内容,如果未能解决你的问题,请参考以下文章

通过代码进行 Nhibernate 一对一映射

我怎样才能让 NHibernate 只生成 SQL 而不执行它?

NHibernate HQL 生成器支持 SQL Server 2016 时态表

nHibernate 生成了这个奇怪的 SQL; SQLS 是不是按原样使用它?

插入 nhibernate sql server 后无法检索生成的 id

使用 NHibernate 从头开始​​:新的大型应用程序的提示