以编程方式在NH映射文件​​中切换ID生成器

时间:2009-09-28 14:14:43

标签: nhibernate mapping

所以我现在正试图在我的应用程序中将对象从一个数据库升级到另一个数据库。基本上我想让用户点击一个按钮,促进从登台到生产的变化,原样。

要做到这一点,我真的想保持ID相同,以帮助调试。因此,例如,如果对象在登台数据库中的ID为6,我希望它在生产中具有相同的ID。为此,我们关闭了生产数据库上的标识,并将这些主键列设置为非空整数。

在我的登台映射文件中,我的ID使用“身份”生成器进行映射,但是对于生产我希望它们被“分配”。是否有可能以编程方式更改它,可能使用拦截器或类似的东西?

提前致谢!

1 个答案:

答案 0 :(得分:0)

我不确定我完全理解你的问题,但是在我看来你试图使用相同的 NHibernate会话来解决这两个环境?为了实现目标,您正在寻找在保存到生产之前替换id生成器的方法吗?

如果是这种情况,你不应该!相反,您应该选择使用两个不同NHibernate会话的策略,即每个环境的会话。

所以基本上你应该从配置了带有身份生成器的映射的会话中的登台环境中获取要升级的对象,并将这些对象转换为附加到使用映射配置的会话的对象实例。指定的生成器类型。

有道理吗?