В блоге предлагается использовать перехватчик для повторной загрузки номера текущей версии из базы данных, чтобы выполнить ручную проверку версии с версией, переданной через объект из объекта DTO. Это, безусловно, будет работать, но, как описано в статье, добавляется дополнительный удар по БД для загрузки номера текущей версии.
Лучшее решение, которое кажется довольно очевидным, поскольку на самом деле это то, что описано в документации к «Проверка версии приложения», как описано и процитировано в этой записи блога. То есть, выполните проверку версии для изначально загруженного объекта , используя версию DTO. В частности, используя код из статьи (изменения в коде статьи полужирный ):
public void Update(MyDTO dto) {
// Select the item.
var item = this.repository.SelectById(dto.Id);
<b>
// Verify there hasn't been a concurrent change
if(item.Version != dto.Version)
{
throw new StaleObjectStateException();
}
</b>
// Map values from DTO to model.
item.Name = dto.Name;
<b><s>item.Version = dto.Version;</s></b>
// Call update
this.repository.Update(item);
}