Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 3308|Відповідь: 0

[Джерело] EF concurrency exception DbUpdateConcurrencyException повторює запит на кешоване значення

[Копіювати посилання]
Опубліковано 01.11.2023 20:30:43 | | | |
Вимоги: Використовуйте оптимістичні блокування EF для контролю конкурентності, якщо виникає паралелізм, додайте механізм повторного спробування, виявляйте, що дані, які повторно запитуються після повторного опитування, є кешованими даними EF, що завжди призведе до збереження винятків.

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

Ця дискусія призвела до роздумів щодо кешування запитів EF 6.x та EF Core:Вхід за гіперпосиланням видно.

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

Як показано нижче:



SQL-скрипт:

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

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



Варіант 1 (рекомендовано)

використанняEntityState.DeachedПозначаючи стан сутності як такі, що не відстежується контекстом, змінюйте його наступним чином:

Як показано нижче:



Варіант 2

Викликайте метод Reload() для оновлення об'єкта сутності, код виглядає так:

Хоча перезавантаження також може оновлювати значення кешу EF,Це призводить до виконання SQL-запитів більше одного разуТому це не рекомендується.

Інші два методи — AsNoTracking — не підходять, а інший — не тестується.

(Кінець)




Попередній:.NET перетворює варбінарний рядок бази даних у масив байтів[]
Наступний:Налаштування OpenWRT для завантаження команди виконання
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com