合并Nhibernate中的实体更改

时间:2009-10-13 08:41:46

标签: nhibernate

鉴于我有两个用户同时编辑不同地址对象的情况。*

用户1仅编辑address.streetname并保存,用户2编辑address.town并保存。

我是否可以配置nhibernate,以便只更新已更改的字段,从而合并更改?

我已经绑定了动态更新,但他没有做到这一点,它更像是一种优化技术。

dynamic-update="true"

我也尝试过版本,但这似乎没有达到预期的效果。

<version  name="Version"  type="int" column="Version"/>
  • 我很欣赏这是一个奇怪的场景,但这是我的要求。

2 个答案:

答案 0 :(得分:2)

严格来说,这本身并不是“合并”:总是有丢失数据的可能性(而且非常严重,我应该补充)。 dynamic-update应该可以解决问题,但是如果您从ISession分离对象,它将无效,您还需要将select-before-update设置为true这样NHibernate将重新读取数据库中的特定记录。

答案 1 :(得分:1)

我建议您挑战该要求

在您给出的示例中,它可能没问题,但在许多情况下,机械地合并更新在功能上是不一致的,没有明确的功能选择。

即使在给出的示例中,假设您添加验证,检查城镇中是否存在街道:您的验证可以通过这两个更新,您的数据将会损坏!!