2011-07-27 63 views
0

我们有一个当前支持Oracle和SQL Server数据库的应用程序。我们正在从另一个ORM转向NHibernate。重新映射NHibernate ID生成

我们的ID映射(甲骨文)最后看起来像这样:

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

我们不能简单地用“天然的”,因为这使用单个数据库范围内的序列,我们需要每个实体类型一个。

我们正在尝试使用讨论here的remapper思想,它似乎适用于修剪表名长于30个字符等等的东西,但是我们无法弄清楚如何删除序列参数从我们的映射中传递过来。我们仍然想为SQL Server使用本地生成器类,但省略序列名称。

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

回答

1

这似乎在我们建立一个测试项目工作:

if (classMap.Identifier.IsSimpleValue) { 
    var simpleVal = classMap.Identifier as SimpleValue; 
    simpleVal.IdentifierGeneratorProperties.Remove("sequence"); 
} 

不知道,如果是做到这一点的最好办法,但它确实有通过对一个与Oracle的SQL Server数据库的一些简单的集成测试映射。