powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate, 3-х звенка, отслеживание конкурентного доступа
3 сообщений из 3, страница 1 из 1
NHibernate, 3-х звенка, отслеживание конкурентного доступа
    #38065528
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В 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 - если различаются, значит "запись изменена др. пользователем". А у объекта могут быть связанные коллекции, эту проверку приходиться делать и там...

Спасибо.
...
Рейтинг: 0 / 0
NHibernate, 3-х звенка, отслеживание конкурентного доступа
    #38065772
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmaw,

NHibernate бросит исключение в момент сохранения, т.к. попробует выполнить примерно такую команду:
Код: sql
1.
Update mytable set ..... where Id = 123 and Version = 4


В рельзультате он получит сообщение, сколько строк было обновлено (0) и бросит исключение. Его дальше и обрабатывайте.
...
Рейтинг: 0 / 0
NHibernate, 3-х звенка, отслеживание конкурентного доступа
    #38068627
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtor,

это то понятно. но, как я описал по пунктам, перед сохранением "2. по Id из DTO запрашиваю DomainObject". так что хиберовский StaleObjectStateException возможен только если после п.3 до п.4 изменится состояние в БД. Но это один из вариантов, маловероятный к тому же.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate, 3-х звенка, отслеживание конкурентного доступа
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]