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

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

[Источник] Массовая отправка и обработка транзакций в Entity Framework

[Скопировать ссылку]
Опубликовано 08.04.2017 22:10:01 | | |

Использование SaveChanges() в Entity Framework очень часто, и вызов SaveChanges() после одного изменения или удаления данных возвращает количество записей о воздействиях.

Чтобы использовать пакетную модификацию или пакетное удаление данных, вам нужен метод SaveChanges(false)+AcceptAllChanges().



SaveChanges(false) — это просто уведомление о том, что EF нужно выполнить операцию в базе данных, которая находится в памяти и может быть отменена при необходимости, например, коммитирование AcceptAllChange() действительно успешно, и EF отменит операцию SaveChanges(false).



При работе с распределёнными транзакционными операциями необходимо использовать TransactionScope, и часто мы пишем так:


Но такое письмо — рискованно, ложно
Например, context1. SaveChanges() удалось, context2. SaveChanges() — проблематично, мы в сфере действия. Complete() завершится, когда транзакция будет выполнена и Context1 успешно выполнен

(В моей практике вышеуказанное можно откатить нормально, если учитывать контекст1. SaveChanges() удалось, context2. SaveChanges() — проблематично, ни одна из них не будет успешно выполнена!
Ссылайтесь на пространство имён System.Transaction в вашем проекте. Определение TransactionScope в использовании эквивалентно определению сферы вещей, то есть область этой транзакции находится в пределах использования. В сфере применения, если область отсутствует. Выполните команду(), после чего область автоматически откатит все операции после уничтожения. )

Это может не всегда соответствовать нашим потребностям. Если нам нужно, чтобы context1 и context2 успешно выполнялись одновременно, или ни один из них не удастся, необходимо внести небольшие корректировки в код, например, использовать следующий код:



Мы используем SaveChanges (false) для отправки необходимых команд операций базы данных в базу данных, что означает, что context1 и context2 практически не изменились; если транзакция завершена и автоматически откатена, ни одно из изменений фактически не фиксируется в базе, поэтому её можно успешно откатить.




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

Mail To:help@itsvse.com