重新映射NHibernate ID生成
我们有一个目前支持Oracle和SQL Server数据库的应用程序。我们正在从另一个ORM迁移到NHibernate 我们的ID映射(针对oracle)最终如下所示:重新映射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
<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数据库