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

Nhibernate 以编程方式切换NH映射文件中的ID生成器,nhibernate,mapping,Nhibernate,Mapping,因此,我目前正在尝试在我的应用程序中将对象从一个数据库升级到另一个数据库。基本上,我希望允许用户单击一个按钮,并将更改从登台升级到生产 要做到这一点,我真的希望保持ID不变,以帮助调试。因此,例如,如果对象在staging db中的ID为6,我希望它在生产中具有相同的ID。为此,我们在生产数据库上关闭了identity,只使用非空整数生成主键列 在我的登台映射文件中,我的ID使用标识生成器进行映射,但对于生产,我希望分配它们。有没有可能通过编程来改变这一点,或者使用拦截器或类似的东西 提前谢谢

因此,我目前正在尝试在我的应用程序中将对象从一个数据库升级到另一个数据库。基本上,我希望允许用户单击一个按钮,并将更改从登台升级到生产

要做到这一点,我真的希望保持ID不变,以帮助调试。因此,例如,如果对象在staging db中的ID为6,我希望它在生产中具有相同的ID。为此,我们在生产数据库上关闭了identity,只使用非空整数生成主键列

在我的登台映射文件中,我的ID使用标识生成器进行映射,但对于生产,我希望分配它们。有没有可能通过编程来改变这一点,或者使用拦截器或类似的东西


提前谢谢

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

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

因此,基本上,您应该在使用标识生成器的映射配置的会话中从登台环境中获取要升级的对象,并将这些对象转换为附加到使用指定生成器类型的映射配置的会话的对象实例

有道理吗