How to apply a transaction in Entity infrastructure

I have two tables. I am updating these tables using the framework entity. here is my code

public bool UpdateTables() { UpdateTable1(); UpdateTable2(); } 

If any operation to update the table failed, you should not perform other actions, how to do this within the entity?

+6
source share
4 answers
 using (TransactionScope transaction = new TransactionScope()) { bool success = false; try { //your code here UpdateTable1(); UpdateTable2(); transaction.Complete(); success = true; } catch (Exception ex) { // Handle errors and deadlocks here and retry if needed. // Allow an UpdateException to pass through and // retry, otherwise stop the execution. if (ex.GetType() != typeof(UpdateException)) { Console.WriteLine("An error occured. " + "The operation cannot be retried." + ex.Message); break; } } if (success) context.AcceptAllChanges(); else Console.WriteLine("The operation could not be completed"); // Dispose the object context. context.Dispose(); } 
+14
source

use transaction

  public bool UpdateTables() { using (System.Transactions.TransactionScope sp = new System.Transactions.TransactionScope()) { UpdateTable1(); UpdateTable2(); sp.Complete(); } } 

also you need to add System.Transactions to your refference project

+4
source

You do not need to use TransactionScope: Entity Framework automatically applies the transaction when calling SaveChanges () in your context.

 public bool UpdateTables() { using(var context = new MyDBContext()) { // use context to UpdateTable1(); // use context to UpdateTable2(); context.SaveChanges(); } } 
0
source

You can do something like this ....

 using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.RepeatableRead })) { using (YeagerTechEntities DbContext = new YeagerTechEntities()) { Category category = new Category(); category.CategoryID = cat.CategoryID; category.Description = cat.Description; // more entities here with updates/inserts // the DbContext.SaveChanges method will save all the entities in their corresponding EntityState DbContext.Entry(category).State = EntityState.Modified; DbContext.SaveChanges(); ts.Complete(); } } 
0
source

Source: https://habr.com/ru/post/890019/


All Articles