如果使用version屬性和json rest-service進行樂觀併發,並返回僅由Id,Version和changed屬性組成的更改集的客戶端,那麼如何更新服務器端實體?如何使用json變更集更新我的實體?
我想做的是將我的json反序列化爲detatched實體,然後使用ISession.Merge方法更新我的實體。但是,我的分離實體將擁有很多屬性的空值,如果我調用合併,我的實體將被更新,這不是我想要的。如果有一種方法可以告訴合併,以忽略爲空的屬性,並保留解析我的問題的持久實體的任何相應的非空值。
如果無法配置合併行爲,我當然可以獲取持久化實體並使用反射實現我自己的合併方法。這種方法的問題是,它要求我首先查詢實體的數據庫,然後更新它,而合併方法應該將其作爲一項操作執行,除非我誤解了。
您可能會問爲什麼我只想傳遞變更集而不是整個實體。這是因爲它允許我發送最少的數據,並且還指示用戶正在嘗試更改的內容,我可以使用它來測試用戶權限。
如果在nhibernate的範圍內無法做到這一點,您將如何繼續?
我會採取反思路線。它需要再往返一次,但爲您節省了很多麻煩。我認爲你可以調整一個自定義攔截器的合併,但我認爲這是不值得的,直到證明相反 – Firo