У меня есть таблица, в которой содержится информация о машинах (назовем ее tbl_incoming_car). В этой таблице есть уникальный столбец с именем «customer_number», который показывает количество автомобилей, которые попали в систему до сих пор. Один и тот же автомобиль может входить и выходить много раз, но это регистрируется только один раз.Запирание кодом EF Сначала
Итак, когда вступает новый автомобиль, мне нужно получить номер последнего, увеличить его, а затем сохранить его как «customer_number» нового автомобиля.
Я знаю, что самым простым способом было бы иметь отделенную таблицу для автомобилей, иметь «customer_number» и регистрировать входы и выходы в другой таблице, но это всего лишь глупый пример, чтобы разоблачить ситуацию. Поэтому нет смысла обсуждать, что подход ошибочен, я знаю это уже :)
Как я уже сказал, каждый раз, когда новый автомобиль входит в систему, я должен получить последнюю добавленную строку, получить «customer_number» ', увеличьте его и сохраните как атомную операцию. Другие экземпляры приложений могут попытаться сделать то же самое, и БД должна содержать запросы для последней добавленной строки во время «задачи создания».
Я думал, что смогу сделать это, установив уровень изоляции на сериализуемый, но я думаю, что это не помешает прочитать последнюю строку, а вставить новую. Таким образом, похоже, что блокировка - это решение. Я попытался использовать статический объект в качестве Монитора в коде, и он отлично работает, но, конечно, он ограничен одним и тем же доменом приложения, мне нужно что-то на уровне БД.
Я не думаю, что в EF есть что-то, чтобы установить блокировку на БД, так что это лучший способ установить блокировку на столе и выпустить ее позже?
Спасибо.
Спасибо за -1, но я бы хотел, чтобы причина указана. – vtortola
Я не могу дать вам причину, но вот мой +1 для вас вместо – galets
спасибо @galets :) – vtortola