SchemaExport与HiLo算法

时间:2009-12-22 08:27:51

标签: nhibernate nhibernate-mapping

我正在使用schemaExport为我的自动测试创建内存数据库。我有几(5)个类将他们的HiLo标识映射到同一个数据库表,每个类使用一列。

这给了我一张桌子,hibernate_unique_key,w。 5列。但是,在使用scemaexport生成数据库时,该表只获得一个列(IPoolActivation),从而使我的查询失败,因为模型中的映射现在无效。我已经尝试手动查询内存数据库来创建表,但我宁愿知道如何使schemaexport正确执行。

我的一个映射文件的片段;

<id name="Id" column="Id" type="Int32">
  <generator class="hilo">
    <param name="column">IENPool</param>
  </generator>
</id>

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

我相信在SchemaExport中存在一个错误(或者它是设计上的),它只在看到第一个带有HiLo的实体时才查看hibernate_unique_key表。因此,所有HiLo实体都必须使用相同的列。

但是,我最近需要一个自定义IdGenerator,它基于HiLo继承的NHibernate中的相同基类。对于这个数据库,我需要每个表一列(它是用于使用HiLo样式生成器设置的遗留数据库)。

如果有帮助,你可以看看我在这里做了什么:

Implementing a custom id Generator for nHibernate

Generate custom DDL for a custom id Generator

Entire post on nhibernate.info