重新映射NHibernate ID生成

重新映射NHibernate ID生成,nhibernate,Nhibernate,我们有一个目前支持Oracle和SQL Server数据库的应用程序。我们正在从另一个ORM迁移到NHibernate 我们的ID映射(针对oracle)最终如下所示: <id name="Id" column="FoozId"> <generator class="native"> <param name="sequence">Fooz_SEQ</param> </generator> </id> Fo

我们有一个目前支持Oracle和SQL Server数据库的应用程序。我们正在从另一个ORM迁移到NHibernate

我们的ID映射(针对oracle)最终如下所示:

<id name="Id" column="FoozId">
  <generator class="native">
    <param name="sequence">Fooz_SEQ</param>
  </generator>
</id>

Fooz_SEQ
我们不能简单地使用“native”,因为它使用单个数据库范围的序列,并且每个实体类型需要一个序列

我们正在尝试使用讨论过的重新映射思想,它似乎可以很好地处理长度超过30个字符的表名等问题。。。但是当我们传递映射时,我们不知道如何从映射中删除序列参数。我们仍然希望使用SQL Server的本机生成器类,但省略了序列名称


这是可行的,还是我们需要生成两组映射?

这似乎适用于我们设置的测试项目:

if (classMap.Identifier.IsSimpleValue) {
    var simpleVal = classMap.Identifier as SimpleValue;
    simpleVal.IdentifierGeneratorProperties.Remove("sequence");
}
不确定这是否是最好的方法,但它确实有一些简单的集成测试,这些测试通过了带有Oracle映射的SQL Server数据库