Re: UOW изменение количественного свойства
От: vsb Казахстан  
Дата: 31.05.17 15:23
Оценка:
Вариант 1. Использовать транзакции. Например встроенные в СУБД.
При этом тот, кто обновил свойство первым, его обновит, а второму покажет ошибку, мол вы отредактировали неактуальные данные, можно ему предложить, например, отредактировать ещё раз уже актуальные данные. Предполагается, что транзакций открывается при показе формы и коммитится/откатывается при закрытии формы. В принципе так сейчас не делают.

Вариант 2. Оптимистичные блокировки. Примерно то же самое, только руками. При открытии формы запоминается некая ревизия записи, при сохранении сравнивается с последней и сохраняется только если совпадает.

Показывать пользователю такой диалог это самый простой вариант. Более сложный вариант — руками разруливать конфликты, например в твоём варианте можно понять, что если предметов ещё хватает, можно и автоматически разрулить этот конфликт. Или если редактировались разные поля, никак не связанные друг с другом, можно сделать слияние этих правок.

Вариант 3. Поток событий. Каждая единица работы это отдельное событие. В твоём случае не "Изменить 3 на 2", а "Уменьшить количество на единицу". Соответственно разницы нет, в каком порядке эти события пришли, результат будет одинаковый.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.