Слияние изменений сущностей в Nhibernate - PullRequest
2 голосов
/ 13 октября 2009

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

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

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

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

dynamic-update="true"

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

<version  name="Version"  type="int" column="Version"/>
  • Я понимаю, что это странный сценарий, но это требование, которое мне дали.

Ответы [ 2 ]

2 голосов
/ 13 октября 2009

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

1 голос
/ 13 октября 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...