|
NHibernate, 3-х звенка, отслеживание конкурентного доступа
|
|||
---|---|---|---|
#18+
В 2-звенке проблем не было - все само, как в документации написано, отслеживалось. В 3-х звенке в процедуре сохранения на веб-сервисе делаю так: 1. принимаю на вход DTO 2. по Id из DTO запрашиваю DomainObject 3. на основе DTO обновляю состояние DomainObject 4. сохраняю DomainObject в БД Если в 2-х звенке мне достаточно было открыть в приложении форму редактирования DomainObject, вручную из другого приложения изменить Version в БД, нажать кнопку сохранить и получить StaleObjectStateException, то теперь это не канает в связи с п.2 (ручное изменение Version у DomainObject после выполнения п.2 на основе DTO эффекта не даёт - NHibernate, видимо, это сечет). Подозреваю, что NHibernate бросит StaleObjectStateException, если изменение в БД произойдет не до п.1, а перед п.4. Вопрос в том, как теперь разруливать конкурентный доступ. Пока что к обычной схеме, что была в двузвенке (отлавливание StaleObjectStateException на случай, если изменение в БД до п.4 произошло) добавил "ручную" проверку Version у DTO и DomainObject - если различаются, значит "запись изменена др. пользователем". А у объекта могут быть связанные коллекции, эту проверку приходиться делать и там... Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 08:22 |
|
NHibernate, 3-х звенка, отслеживание конкурентного доступа
|
|||
---|---|---|---|
#18+
kmaw, NHibernate бросит исключение в момент сохранения, т.к. попробует выполнить примерно такую команду: Код: sql 1.
В рельзультате он получит сообщение, сколько строк было обновлено (0) и бросит исключение. Его дальше и обрабатывайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 11:22 |
|
NHibernate, 3-х звенка, отслеживание конкурентного доступа
|
|||
---|---|---|---|
#18+
SolYUtor, это то понятно. но, как я описал по пунктам, перед сохранением "2. по Id из DTO запрашиваю DomainObject". так что хиберовский StaleObjectStateException возможен только если после п.3 до п.4 изменится состояние в БД. Но это один из вариантов, маловероятный к тому же. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2012, 19:38 |
|
|
start [/forum/topic.php?fid=17&fpage=29&tid=1350164]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 320ms |
total: | 450ms |
0 / 0 |