Как правильно организовать конкурентный доступ с данным?
Мы аналогичную задачу решали так: 
Создали таблицу в которую заноситься объект при подъеме его на редактирование. Все остальные пользователи при попытке редактировать этот объект, получают сообщение, что пользователь "такой-то" его уже редактирует и форма поднимается в режиме только для чтения.
Когда первый пользователь закрывает форму с объектом, из таблицы удаляется запись и объект сможет редактировать другой пользователь.
Иногда случались сбои (например  дисконнект) и пользователь открывший объект на редактирование не мог корректно освободить редактируемый объект. В этом случае, если объект есть в таблице редактируемых, но процесс с его spid  и именем пользователя отсутствует на SQL сервере , принудительно удаляем объект из таблицы редактируемых.
Без такого механизма периодически забивали несоответствия вида: "я поменял объект, сохранил, поднял его на просмотр, а он другой".
Суть в чем - данные могут редактировать N пользователей, но по сути идеальный вариант - кто первый открыл запись тот и редактирует, остальные могут открыть запись только для просмотра.
Описываемый вами подход называется пессимистичной блокировкой. Предлагаю поискать по этому термину как такое реализуется.