我有一個使用Firebird數據庫作爲數據存儲(嵌入模式)的桌面(winforms)應用程序,並且我使用NHibernate作爲ORM。我們需要支持的功能之一是能夠將數據組導入/導出到外部文件。目前,這個外部文件也是一個與主數據庫具有相同模式的數據庫。使用NHibernate在多個數據庫之間複製實體
我已經把NHibernate設置爲查看多個數據庫,我可以同時使用兩個數據庫。但是,問題是在兩個數據庫之間複製數據。我有兩種複製策略:(1)複製對象的所有相同ID [又名導入/導出]和(2)複製大多數新ID [又名複製/複製]。我說「主要是新的」,因爲有一些查找項目將始終使用相同的ID進行復制。
使用新ID複製所有內容都很好,因爲我只需要一個「CopyForExport」方法,可以創建所有內容的副本並且不分配新ID(或清除對象樹中的所有ID)。
什麼是「最佳實踐」方式來處理這種情況並在保留相同ID的情況下在數據庫之間複製數據?我沒有試圖同步兩個數據庫,只是將一個子集(用戶可選擇的)或數據傳輸給其他人(然後將數據子集導入到他們自己的數據庫中)。
進一步說明:我認爲我已經將問題隔離爲: 我想使用NHibernate的ISession.SaveOrUpdate功能,因此我使用未分配的身份生成器來設置我的實體。但是,我想要覆蓋生成的標識(用於在同一進程中的多個數據庫之間複製數據)時遇到問題。
有沒有辦法使用Guid.Comb或UUID生成器,但能夠有時指定我自己的標識符(用於傳輸到具有相同模式的不同數據庫連接)。
終於找到了這個解決方案,我遇到了類似的問題。我想這並沒有幫助休眠站點目前停止運行。 – LizB 2009-04-30 05:57:18