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

Вид: 49435|Відповідь: 1

[Джерело] EF Сутності типу додатку "XXXX" не можуть працювати, бо інші...

[Копіювати посилання]
Опубліковано 12.05.2021 09:43:53 | | |
EF додає сутність типу «XXXX», яка не вдається, оскільки інша сутність того ж типу вже має таке ж первинне значення ключа. При використанні методу «Приєднати» або встановлення стану сутності на «Незмінне» або «Змінено»

Тому що інші об'єкти того ж типу вже мають однакове первинне значення ключа. Ця поведінка може виникати при використанні методу «Приєднати» або при встановленні статусу сутності на «Незмінний» або «Змінено», якщо будь-яка сутність у малюнку має суперечливе значення ключа
Це може бути пов'язано з тим, що деякі сутності є новими і ще не отримали ключове значення, згенероване базою даних (нова сутність), у такому випадку граф відстежується за методом «Додати» або станом «Додано», а стан ненової сутності відповідно встановлюється як «Без змін» або «Змінено».
Насправді ця помилка полягає в тому, що коли EF відкриває транзакцію, вже є дані з тим самим первинним ключем у контексті EF, і я особисто стикаюся з цією проблемою в різних ситуаціях:

Ситуація 1:

Модифікація, ітерація одних і тих самих даних у таблиці (наприклад, ітерація кількості інвентарю одного й того ж товару) має стати першим випадком, коли контекстний кеш не очищається

Код виглядає так:


Цикл тут не повідомляє про помилку з першого разу, а вдруге буде помилкою

Рішення:


Ситуація 2:

Операція циклу спочатку додає фрагмент даних, а потім змінює дані

Код виглядає так:


Тут також повідомляються про помилки, особливо для нових EF або нових суб'єктів

Рішення:








Попередній:Тест продуктивності Redis Benchmark
Наступний:ASP.NET Детальне пояснення проміжного програмного забезпечення Core (9).
Опубліковано 22.09.2021 20:55:57 |
Навчися вчитися...
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com