为什么 FluentNHibernate 缺少 CascadeType.REPLICA

本文关键字:REPLICA CascadeType 缺少 FluentNHibernate 为什么 | 更新日期: 2023-09-27 18:35:53

我必须同时在两个地方保持同一个域运行。一端必须能够"离线"运行,同时仍然必须在"在线"时不时接收和发送数据到另一端。基本上,我们有一个中央服务器,它聚合来自客户端的数据并提供一些更新的数据(如产品的最新价格,新产品等)。我正在使用 NHibernate 来处理持久性。

我正在尝试使用NHibernate的Replicate方法

session.Replicate(detached, ReplicationMode.LatestVersion);

获取来自另一端的对象并合并/合并/附加到"本地"数据库。

它无法执行,因为它无法级联引用和集合。查看FluentNHibernate的级联选项(甚至直接查看NHibernate源代码),我找不到REPLICA级联类型。来自Hibernate的文档:CascadeType.REPLICA

我的问题是:有谁知道为什么FluentNHibernate缺少这样的选项?有没有不同/更好的方法来设置这种级联行为?

我尝试了Cascade.Merge()选项和session.Merge(detached),但是尽管级联工作正常,但它让我有些头疼,主要是因为id生成和乐观锁定(版本控制)。

编辑:NHibernate的源代码确实有一个映射到字符串"复制"的ReplicateCascadeStyle类。Cascade/CascadeConverter类(来自 Mapping.ByCode 命名空间)没有复制作为选项。所以NHibernate本身支持复制上的级联,但我想只能通过手动映射。

为什么 FluentNHibernate 缺少 CascadeType.REPLICA

好的,因为我正在使用Fluent NHibernate来映射大约100 +类,切换到xml映射对我来说不是一个选择。所以我在GitHub上分叉了Fluent NHibernate,添加了缺少的Cascade.Replica选项并发送了一个拉取请求。

希望它对某人有所帮助。