2009-10-13 34 views
2

合併實體的變化鑑於我有兩個用戶在同一時間編輯不同的地址對象的情況。*在NHibernate中

用戶1名編輯和address.streetname保存和用戶2編輯address.town並保存。

是否有無論如何我可以配置nhibernate,以便只更改更改的字段,從而更改合併?

我已經綁定了動態更新,但他沒有做到這一點,它更多的是一種優化技術。

dynamic-update="true" 

我也嘗試過版本,但是這似乎沒有預期的效果。

<version name="Version" type="int" column="Version"/> 
  • 我明白這是一個奇怪的場景,但它是我給出的要求。

回答

2

嚴格地說,這不是「合併」本身:總會有丟失數據的可能性(這是非常嚴重的,我應該加上)。 dynamic-update應該訣竅,但是如果你從ISession中分離出一個對象,它將不起作用,並且你需要將select-before-update設置爲true,以便NHibernate將重新讀取數據庫中的特定記錄。

1

我建議你挑戰那個要求

在你給出的例子中,它可能沒問題,但在很多情況下,它會機械地合併更新,而沒有明確的功能選擇,在功能上不一致。

即使在給出的例子中,假設您添加驗證,檢查鎮上是否存在街道:您的驗證可能允許傳遞兩個更新,並且您的數據將變得腐敗!