nhibernate - 使用 NHibernate/Fluent Nhibernate 强制插入身份

标签 nhibernate fluent-nhibernate identity-insert

我们有一个使用 NHibernate 的相当健壮的系统,我们正在从单个数据库服务器迁移到拥有两台服务器,一台用于管理,另一台用于我们面向公众的网站。这主要是为了让我们可以使用不会影响当前站点的工作流来进行内容管理之类的事情。到今天为止,它们是同一服务器中的两个数据库,但随着时间的推移,我可以看到使用两台物理机和一个 Web 服务调用来推送数据。

例如,我们的一位营销人员决定通过管理员推出新的促销事件,并将其安排在 2 周后。我们正在开发一个调度系统,该系统将在新促销事件开始时将其推送到我们的生产服务器。目的是为数据推送使用相同的 NHibernate 提供程序,但我们需要保持引用完整性。

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

最佳答案

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

  • 我建议要么使用你自己的ID
    生成器或 Guid/Guid.Comb 以来
    您将能够使用 NHibernate 的
    在这种情况下复制(如
    问题中解释)
  • 您也可以编写自己的不使用 NHibernate 的复制代码,如果它足够简单,这是可行的。
  • 使用您的数据库支持的复制技术。我以前在 MS SQL Server 之间使用过复制,而且设置起来并不难。我很确定其他 RDBMS 支持类似的东西。
  • 关于nhibernate - 使用 NHibernate/Fluent Nhibernate 强制插入身份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1696815/

    相关文章:

    c# - "Session is Closed!"- NHibernate

    c# - 如何以引用的 id 作为条件进行 NHibernate 查询?

    c# - 如何将此条件写入 NHibernate HBM 映射?

    fluent-nhibernate - bool 值的 Fluent NHibernate 自定义类型约定

    c# - session 已关闭对象名称 : 'ISession' . 在 NHibernate.Impl.AbstractSessionImpl.ErrorIfClosed() - 如何阻止 session 过早关闭

    entity-framework - 在 EF4 中使用 IDENTITY_INSERT

    c# - MySql 不接受 float 列中的 C# float.MinValue

    sql-server-2005 - NHibernate, SQL Server - 枚举到 int 的映射

    entity-framework - 如何在 Seed 中通过 AddOrUpdate 方法插入身份

    identity-insert - SQL Server 2019 行为随 SET IDENTITY_INSERT ON/OFF 范围的变化