如何在新数据库中创建hibernate_unique_key表?

时间:2010-12-29 16:23:21

标签: .net nhibernate

我正在尝试使用NHibernate在NHibernate 2.0 Beginners Guide中创建我的第一个测试应用程序。该示例在映射中使用HiLo POID生成器。据我所知,该算法需要特殊的数据库表来存储当前的Hi值。但我不明白这个表是如何创建的?我是否需要手动创建表(我没有找到此表的SQL脚本),还是应该由会话自动创建?

我当前的代码抛出异常消息:无效的对象名称'hibernate_unique_key',我的数据库中不存在表。

2 个答案:

答案 0 :(得分:8)

我建议使用每个表格的hilo,为此,您需要创建表格manually,然后添加一些数据行,例如:

CREATE TABLE hibernate_unique_key (
  TableName varchar(25) NOT NULL,
  NextHi bigint NOT NULL
)

然后在数据库中为要使用hilo的every表添加一行:例如

CmsLogin,10
Address, 10

您的映射将包含以下内容: -

    <id name="Id" column="Id" unsaved-value="0">
        <generator class="hilo">
            <param name="column">NextHi</param>
            <param name="where">TableName='CmsLogin'</param>
            <param name="max_lo">100</param>
        </generator>
    </id>

和中提琴!

答案 1 :(得分:1)

如何生成数据库模式的最简单选项是使用工具hbm2ddl:这只是配置会话工厂的问题:

<property name="hbm2ddl.auto">create</property>

我最近发现的另一个选项是从代码中运行shema导出。以下是另一个thread中的详细信息。