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

Вид: 49435|Ответ: 1

[Источник] Сущности EF типа приложения «XXXX» не работают, потому что другие...

[Скопировать ссылку]
Опубликовано 12.05.2021 9: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