What is the difference between
System.Transactions.TransactionScope and EF6's
Could someone give a small example or just explain which one to use when with a clear difference?
P.S: In my project, I'm using EF6. I've already read the documentation but it didn't help much. Also looked up the examples but they are rather using
SqlConnection.BeginTransaction and now MS has introduced this new
Database.BeginTransaction in EF6.
I found out the answer in Entity Framework 6's documentation:
With the introduction of EF6, Microsoft recommends to use new API methods:
System.Transactions.TransactionScope is still very well supported, it is no longer necessary for most users of EF6.
Database.BeginTransaction() is used only for database related operations transaction,
System.Transactions.TransactionScope, in addition to that, makes it possible for 'plain C# code' to also be transactional.
Database.BeginTransaction() where ever doing only db related operations in a transaction in EF6 otherwise use
System.Transactions.TransactionScope for mixing db operations and C# code together in a transaction.
For those who still prefer the
TransactionScope approach, it is recommended they checkout its limitations, especially in cloud scenarios (cloud scenarios do not support distributed transactions).
Further information can be found here