【问题标题】:Remapping NHibernate ID Generation重新映射 NHibernate ID 生成
【发布时间】:2011-07-27 18:41:54
【问题描述】:

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

我们的 ID 映射(用于 oracle)最终看起来像这样:

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

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

我们正在尝试使用here 讨论过的重新映射器的想法,它似乎对于修剪超过 30 个字符的表名等事情已经足够好......但我们无法弄清楚如何删除我们通过映射时的序列参数。我们仍然希望使用 SQL Server 的本机生成器类,但省略了序列名称。

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

【问题讨论】:

    标签: nhibernate


    【解决方案1】:

    这似乎在我们设置的测试项目中有效:

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

    不确定这是否是最好的方法,但它确实有一些简单的集成测试通过了带有 Oracle 映射的 SQL Server 数据库。

    【讨论】:

      猜你喜欢
      • 2011-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多