为什么FluentNHibernate缺少CascadeType.REPLICATE?

时间:2013-10-17 18:05:09

标签: c# .net nhibernate fluent-nhibernate

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

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

session.Replicate(detached, ReplicationMode.LatestVersion);

从另一端获取对象,并合并/合并/附加到“本地”数据库。

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

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

我和Cascade.Merge()一起尝试了session.Merge(detached)选项,但是虽然级联工作得很好,但它给我带来了一些麻烦,主要是因为id生成和optmistic锁定(版本控制)。

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

1 个答案:

答案 0 :(得分:1)

好的,因为我正在使用Fluent NHibernate来映射大约100多个类,切换到xml映射对我来说不是一个选项。 所以我在GitHub上分享了Fluent NHibernate,添加了缺少的Cascade.Replicate选项并发送了pull request

希望它有所帮助。

相关问题