我有一個場景是這樣的模擬類heirachy保存同一類結構,兩組表與NHibernate
- 訂購
-
- 訂單行
-
- 產品
個
- 客戶
-
- OrderNotes
這產生像
- 顧客一些表
- 產品
- CustomerOrderNotes(客戶ID,的OrderId)
- 訂單(客戶ID)
-
- OrderLines(的OrderId,產品編號)
我有了這個映射到NHibernate和一切工作正常。
所以,現在我想創建一個在這個對象heirachy的編輯版本,並堅持到數據庫以及。
我正在使用asp.net,並希望將編輯更改保存爲單獨的行,然後僅在發佈時纔會將更改提交到活動行。 (我正在計劃將編輯數據複製到實時數據)
使用相同的對象模型可以將編輯數據存儲在不同的表中嗎?
如果不是,我可以創建一個派生自Order的EditOrder類,但是EditOrder仍然會指向OrderLine和Customer。因此,OrderLine和Customer的任何更改都會保存到實時行中。 對於NHibernate的看來,我需要創建一個單獨的heirachy
- EditOrder
-
- EditOrderLine
-
- EditProduct
- EditCustomer
- 個
- EditCustomerNotes
,而無需創建一個通用的龐然大物,讓你定義在此heirachy使用的每個類我不知道該走的路。
我真的想用一個階級的階級,而不是維持兩個階級的繼承人。
另一種選擇是將編輯中的對象heirachy序列化到用戶類中。不過,如果的類變化我必須全殲數據,而不是運行數據庫遷移腳本之一。
另一種解決方案是使用不同映射文件的其他數據庫/會話工廠。
處理這種情況的推薦方法是什麼?
是啊,這是一個選項,但隨後因爲你說有這個只要你發佈的數據做一個選擇過濾。 同樣,每個對象必須知道它的狀態,除非所有的查詢鏈接到一個知道,如果它被髮布或只需編輯數據父實體。爲了編輯這會是這樣,但如果我只是想拔出客戶或Notes我不一定要加入的順序。 眼下打算序列化的編輯數據來嘗試二進制。雖然這有它自己的問題。 – Ian 2009-10-16 15:50:42