Использование 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 практически не изменились; если транзакция завершена и автоматически откатена, ни одно из изменений фактически не фиксируется в базе, поэтому её можно успешно откатить.
|