Использование транзакции для каждого запроса замедляет их - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть странный вопрос: использование транзакции для каждого запроса замедляет мой запрос, и это что-то заметное?

using (var transaction = _context.Database.BeginTransaction())
{
    this._context.SaveChanges();
    transaction.Commit();
}

1 Ответ

0 голосов
/ 04 марта 2019

В Entity Framework метод SaveChanges () внутренне создает транзакцию и оборачивает все операции INSERT, UPDATE и DELETE под ней. Несколько вызовов SaveChanges () , создание отдельных транзакций, выполнение операций CRUD и затем принятие каждой транзакции

Ваш код выглядит хорошо, если в одной транзакции есть несколько SaveChanges .

Если у вас есть несколько SaveChanges в одной транзакции, тогда EF 6 и EF Core позволяют нам создавать или использовать одну транзакцию с несколькими вызовами SaveChanges (), используя следующие методы:

DbContext.Database.BeginTransaction () : создает новую транзакцию для базовой базы данных и позволяет зафиксировать или откатить изменения, внесенные в базу данных, с помощью нескольких вызовов метода SaveChanges.

DbContext.Database.UseTransaction () : позволяет передавать существующий объект транзакции, созданный вне области контекста.Это позволит EF выполнять команды внутри объекта внешней транзакции.Либо введите null, чтобы очистить знания платформы об этой транзакции.

...