Когда пользователь «резервирует» элемент, назначьте брони конечную дату / время (например, DateTime.Now + 6 часов или что-то еще), к которому он должен был приобрести зарезервированный элемент, иначе после этой даты / времени резервирование становится недействительным - я верю, что так будет работать подавляющее большинство кирпичных и минометных магазинов.
Если вас беспокоит наличие таблицы tbReservations с множеством устаревших строк, вы можете настроить задание SQL на очистку таблицы старых / недействительных резервирований каждую ночь или всякий раз, когда это подходит для бизнес-ситуации.