如何在NHibernate中使用序列作为ID的默认值?

时间:2013-05-13 16:04:44

标签: nhibernate

我们有一个映射在Fluent NHibernate中的表,其中一个由Hilo序列生成。

this.Id(x => x.Id).GeneratedBy.SeqHiLo("seq_hp", "1000");

我们现在需要在Id上指定一个Default值(设置为下一个序列值),以使其与SQL Merge语句一起使用。

但是,NHibernate只会在生成表之后生成序列,因此下一个语句将失败,因为还没有(还)序列。

this.Id(x => x.Id).GeneratedBy.SeqHiLo("seq_hp", "1000")
                  .Default("next value for seq_hp");

NHibernate中是否有任何方法在创建表之前指定序列的创建? 我们正在使用Fluent映射,但欢迎NHibernate的代码或XML映射解决方案。

1 个答案:

答案 0 :(得分:1)

另一种方式也是可行的。实现IAuxiliaryDatabaseObject以使用Sql为列添加Default。基类AbstractAuxiliaryDatabaseObject确实提供了默认实现。