We have explored how to leverage the default transaction behavior in EF, which could be leveraged only if multiple operations are performed using a single SaveChanges(). Then we created a simple transaction, which allowed us to maintain transactions between multiple SaveChanges() commits. Later, we created cross-context transactions, identified their limitations, and overcame them with the custom TransactionScope that we built in this chapter. Finally, we created a transaction that was maintained between multiple technologies, provided it shares the connection and transaction objects. The different ways of handling transactions ensure that if anything goes wrong, they will be handled, ensuring we have built a fail-safe mechanism within single or between different data contexts, even between different technologies.
So far, we have been working with a single user and haven...