鉴于我有两个用户同时编辑不同地址对象的情况。*
用户1仅编辑address.streetname并保存,用户2编辑address.town并保存。
我是否可以配置nhibernate,以便只更新已更改的字段,从而合并更改?
我已经绑定了动态更新,但他没有做到这一点,它更像是一种优化技术。
dynamic-update="true"
我也尝试过版本,但这似乎没有达到预期的效果。
<version name="Version" type="int" column="Version"/>
答案 0 :(得分:2)
严格来说,这本身并不是“合并”:总是有丢失数据的可能性(而且非常严重,我应该补充)。 dynamic-update
应该可以解决问题,但是如果您从ISession
分离对象,它将无效,您还需要将select-before-update
设置为true
这样NHibernate将重新读取数据库中的特定记录。
答案 1 :(得分:1)
我建议您挑战该要求。
在您给出的示例中,它可能没问题,但在许多情况下,机械地合并更新在功能上是不一致的,没有明确的功能选择。
即使在给出的示例中,假设您添加验证,检查城镇中是否存在街道:您的验证可以通过这两个更新,您的数据将会损坏!!