我必须保持同一个域同时在两个地方运行。一端必须能够“离线”运行,而“在线”时还必须时不时地向另一端接收和发送数据。基本上,我们有一个中央服务器,它汇总来自客户端的数据并提供一些更新的数据(如产品的最新价格、新产品等)。我正在使用 NHibernate 来处理持久性。
我正在尝试使用 NHibernate 的Replicate
方法
session.Replicate(detached, ReplicationMode.LatestVersion);
获取来自另一端的对象并合并/合并/附加到“本地”数据库。
它无法执行,因为它不能级联引用和集合。查看 FluentNHibernate 的级联选项(甚至直接查看 NHibernate 源代码)我找不到 REPLICATE 级联类型。来自 Hibernate 的文档:
CascadeType.REPLICATE
我的问题是:有人知道为什么 FluentNHibernate 缺少这样的选项吗?有没有不同/更好的方法来设置这种级联行为?
我尝试了与Cascade.Merge()
一起使用的选项session.Merge(detached)
,但是虽然级联工作得很好,但它让我有些头疼,主要是因为 id 生成和 optmistic 锁(版本控制)。
编辑:NHibernate 的源代码确实有一个ReplicateCascadeStyle
映射到字符串“replicate”的类。/类Cascade
(CascadeConverter
来自 Mapping.ByCode 命名空间)没有 Replicate 作为选项。所以 NHibernate 本身支持 Replicate 上的级联,但我猜只能通过手动映射。