用NHibernate / Fluent Nhibernate强制标识插入

时间:2009-11-08 15:08:55

标签: nhibernate fluent-nhibernate identity-insert

我们有一个使用NHibernate的相当强大的系统,我们正处于从单个数据库服务器迁移到拥有两个服务器的过程中,一个用于管理,一个用于面向公众的网站。这主要是因为我们可以使用不会影响当前站点的工作流进行内容管理。截至今天,它们是同一台服务器中的两个数据库,但随着时间的推移,我可以看到使用两台带有Web服务调用的物理机来推送数据。

举个例子,我们的营销人员之一决定通过管理员推出新的促销活动,并从现在起安排两周。我们正在开发一个调度系统,该系统会在启动时将新促销推送到我们的生产服务器。目的是为数据推送使用相同的NHibernate提供程序,但我们需要保持参照完整性。

我们正在使用流畅的nhibernate,我可以看到编写两个不同的类映射,然后使用某种形式的依赖注入(IE结构图)来选择要加载的映射。我希望得到更好的答案,因为随着系统的发展,这似乎无法维持。有什么建议吗?

1 个答案:

答案 0 :(得分:4)

数据库生成的ID值不支持ISession.Replicate。如NHibernate问题跟踪器中的this issue所示。

  • 我建议您使用自己的ID 生成器或Guid / Guid.Comb自此 你将能够使用NHibernate 在这种情况下复制(如 在问题中解释)
  • 您也可以编写自己的复制代码,该代码不使用NHibernate,如果它足够简单,那么这是可行的。
  • 使用您的数据库支持的复制技术。我以前在MS SQL Server之间使用过复制,并没有那么难以设置。我很确定其他RDBMS支持类似的东西。