在nhibernate中更改ID生成器并迁移现有数据库

时间:2013-10-14 09:00:18

标签: sql-server oracle nhibernate nhibernate-mapping

对于大多数数据库实体,我有一个使用增量ID生成器的现有产品。新版本应允许在同一数据库上进行多个服务器实例的集群。该产品支持使用MSSQL和Oracle数据库。

所以我考虑将ID生成器更改为本机,但是存在一些问题。

  • Oracle和MSSQL将使用两种不同的算法 - 在代码中创建对象时是否透明?
  • 如何迁移现有数据库以及如何让生成器不使用已在使用的ID?

提前感谢您对此的任何见解。

1 个答案:

答案 0 :(得分:0)

我建议看一下hilo发电机策略。好处是它可以用于多个进程,并且您仍然保留在NHibernate中使用生成的id的性能优势(特别是允许批量插入)。

MSSQL不允许您将列更改为标识列 - 您需要添加新列然后更新所有外键 - 如果您有很多表/关系,这可能非常非常混乱

使用hilo生成器策略可以完全避免这个问题,它只是一个配置更改,并向数据库添加一个表来存储表的高值,并使用正确的值填充该表。