Учебники

Entity Framework — Транзакция

Во всех версиях Entity Framework всякий раз, когда вы выполняете SaveChanges () для вставки, обновления или удаления базы данных, эта оболочка будет заключать эту операцию в транзакцию. Когда вы вызываете SaveChanges, контекст автоматически запускает транзакцию и фиксирует или откатывает ее в зависимости от того, успешно ли сохранено.

  • Это все прозрачно для вас, и вам никогда не придется иметь дело с этим.

  • Эта транзакция длится достаточно долго, чтобы выполнить операцию, а затем завершается.

  • Когда вы выполняете другую такую ​​операцию, начинается новая транзакция.

Это все прозрачно для вас, и вам никогда не придется иметь дело с этим.

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

Когда вы выполняете другую такую ​​операцию, начинается новая транзакция.

Entity Framework 6 обеспечивает следующее:

Database.BeginTransaction ()

  • Это простой и более легкий метод в существующем DbContext для запуска и завершения транзакций для пользователей.

  • Это позволяет объединить несколько операций в одной транзакции и, следовательно, либо все они зафиксированы, либо все откатаны как одна.

  • Это также позволяет пользователю более легко указать уровень изоляции для транзакции.

Это простой и более легкий метод в существующем DbContext для запуска и завершения транзакций для пользователей.

Это позволяет объединить несколько операций в одной транзакции и, следовательно, либо все они зафиксированы, либо все откатаны как одна.

Это также позволяет пользователю более легко указать уровень изоляции для транзакции.

Database.UseTransaction ()

  • Это позволяет DbContext использовать транзакцию, которая была запущена вне Entity Framework.

Это позволяет DbContext использовать транзакцию, которая была запущена вне Entity Framework.

Давайте посмотрим на следующий пример, где несколько операций выполняются в одной транзакции. Код как —

Для начала транзакции необходимо, чтобы открытое подключение к магазину было открыто.

Поэтому вызов Database.BeginTransaction () откроет соединение, если оно еще не открыто.

Если DbContextTransaction открыла соединение, то оно будет закрыто при вызове Dispose ().