Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 3308|Ответ: 0

[Источник] EF concurrency exception DbUpdateConcurrencyException reques the cached value

[Скопировать ссылку]
Опубликовано 01.11.2023 20:30:43 | | | |
Требования: Используйте оптимистичные блокировки EF для контроля параллелизма, если возникает параллелизм, добавьте механизм повторной попытки, обнаруживайте, что данные, запрашиваемые после повторного запроса, являются кэшированными данными EF, что всегда приводит к сохранению исключений.

Ожидалось, что работа с базой данных затронет одну строку(ы), но на самом деле затронула 0 строк(ов); Данные могли быть изменены или удалены с момента загрузки сущностей. ВидетьВход по гиперссылке виден.Информация о понимании и работе с оптимистичными исключениями в параллельности.

Это обсуждение привело к мыслям о кэшировании запросов EF 6.x и EF Core:Вход по гиперссылке виден.

Обработка различия между одновременной меткой времени и параллелизмом
https://www.itsvse.com/thread-3616-1-1.html

Как показано ниже:



SQL-скрипт:

ASP.NET Код бэкенда Core 6:

Код контроллера:



Вариант 1 (рекомендуется)

использованиеEntityState.DetachedПомечив состояние сущности как не отслеживаемое контекстом, измените его следующим образом:

Как показано ниже:



Вариант 2

Вызовите метод Reload() для обновления объекта сущности, код выглядит следующим образом:

Хотя перезагрузка также может обновлять значения кэша EF,Это приводит к выполнению SQL-запросов более одного разаПоэтому это не рекомендуется.

Два других метода, AsNoTracking, не подходят, и третий не тестируется.

(Конец)




Предыдущий:.NET преобразует варбинарную строку базы данных в массив байтов[]
Следующий:Настройки OpenWRT для загрузки команды выполнения
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com