Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 49435|Отговор: 1

[Източник] EF обекти от тип приложение "XXXX" се провалят, защото други...

[Копирай линк]
Публикувано в 12.05.2021 г. 9:43:53 ч. | | |
EF добавя обект от тип "XXXX", който се проваля, защото друг обект от същия тип вече има същата основна ключова стойност. При използване на метода "Attach" или задаване на състоянието на обекта на "Непроменено" или "Модифицирано"

Защото други обекти от същия тип вече имат същата първична ключова стойност. Това поведение може да се появи при използване на метода "Прикачи" или при задаване на статуса на обекта "Непроменено" или "Модифицирано", ако някое от чертежите има противоречива ключова стойност
Това може да се дължи на факта, че някои обекти са нови и все още не са получили ключова стойност, генерирана от база данни (нов обект), в който случай графът се проследява чрез метода "Add" или състоянието на "Added" entity, а състоянието на неновия обект се задава на "Unchanged" или "Modified" съответно.
Всъщност тази грешка е, че когато EF отвори транзакция, вече има данни със същия първичен ключ в контекста на EF, и лично аз срещам този проблем в различни ситуации:

Ситуация 1:

Модифициране, итерация на едни и същи данни в таблица (например итерация на инвентара на същия артикул), този случай трябва да е първият път, когато контекстният кеш не се изчиства

Кодът е следният:


Цикълът тук не докладва грешка при първия път, а втория път ще бъде допусната грешка

Решение:


Ситуация 2:

Операцията loop първо добавя парче данни, след което модифицира данните

Кодът е следният:


Тук също се докладват грешки, особено за нови EF или нови субекти

Решение:








Предишен:Тест за производителност в Redis Benchmark
Следващ:ASP.NET Подробно обяснение на междинния софтуер на Core (9).
Публикувано в 22.09.2021 г. 20:55:57 ч. |
Научи се да учиш...
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com