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