我必須保持同一個域在同一時間在兩個地方運行。一端必須能夠「離線」運行,同時還必須在「在線」時不時收發數據到另一端。基本上我們有一箇中央服務器,它彙總來自客戶端的數據並提供一些更新的數據(如產品的最新價格,新產品等)。我使用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本身支持複製上的級聯,但只能通過手動映射,我猜。