transaction in the Entity Framework


What is a transaction in the Entity Framework?

Entity Framework internally maintains transactions when the SaveChanges() method is called. The Entity Framework maintains a transaction for the multiple entity insert, update, and delete in a single SaveChanges() method. When we execute another operation, the Entity Framework creates a new transaction.

Entity Framework, whenever you execute SaveChanges() to insert, update or delete the DatabaseDatabase, the framework will wrap that operation in a transaction. When you invoke SaveChanges, the context automatically starts a transaction and commits or rolls it back depending on whether the persistence succeeded.

  • This is all transparent to you, and you’ll never need to deal with it.
  • This transaction lasts only long enough to execute the operation and then complete it.
  • When you execute another such operation, a new transaction starts.

Entity Framework 6 provides the following :

Database.BeginTransaction()

  • It is a simple and more straightforward method within an existing DbContext to start and complete transactions for users.
  • It allows several operations to be combined within the same transaction, and hence either all are committed or all are rolled back as one.
  • It also allows the user to specify the isolation level for the transaction more easily.

Database.UseTransaction()

  • It allows the DbContext to use a transaction that was started outside of the Entity Framework.
  • Beginning a transaction requires that the underlying store connection is open.
  • They are so calling DatabaseDatabase.BeginTransaction() will open the connection if it is not already opened.
  • If DbContextTransaction opens the connection, it will close it when Dispose() is called.