Слияние изменений сущностей в Nhibernate

Учитывая, что у меня есть сценарий, когда два пользователя одновременно редактируют разные объекты адреса. *

Пользователь 1 редактирует только address.streetname и сохраняет, а Пользователь 2 редактирует address.town и сохраняет.

В любом случае я могу настроить nhibernate так, чтобы обновлялись только измененные поля и, таким образом, изменения объединялись?

Я связал динамическое обновление, но его не сработало, это скорее техника оптимизации.

dynamic-update="true"

Я также экспериментировал с версией, но это, похоже, не дает желаемого эффекта.

<version  name="Version"  type="int" column="Version"/>
  • Я ценю, что это странный сценарий, но это требование, которое мне дали.
13.10.2009 08:41:46
2 ОТВЕТА

Строго говоря, это не «слияние» как таковое: всегда есть вероятность потери данных (и это очень серьезно, я должен добавить). dynamic-updateЭто должно сработать, но если вы отсоединяете объект от объекта, ISessionон не будет работать, и вам нужно будет установить select-before-updateего trueтак, чтобы NHibernate перечитывал конкретную запись из БД.

2
13.10.2009 08:54:32

Я предлагаю вам оспорить это требование .

В приведенном вами примере это может быть нормально, но во многих случаях будет функционально непоследовательным объединять обновления механически, без явного функционального выбора.

Даже в приведенном примере предположим, что вы добавили проверку, проверяя, что в городе существует улица: ваша проверка может позволить пропустить два обновления, и ваши данные будут повреждены !!

1
13.10.2009 09:04:09