title: What are the performance implications of BeginTransaction() vs BeginTransactionAsync()
body: <p>I have an implementation of an <em>atomic transaction</em> in which many contexts are being updated inside an asynchronous HTTP POST method.</p>
  <p>Before the transaction implementation, I was manipulating my contexts asynchronously
  eg (<code>await _context.Foo.AddAsync(trade);</code> <code>await _context.SaveChangesAsync();</code>)</p>
  <p>After understanding the need for transitions and seen many synchronous examples out there I decided to implement them synchronously:</p>
  <pre class="lang-cs prettyprint-override"><code>using (var transaction = _context.Database.BeginTransaction())
              {
                  //_context.Database.Log = Console.WriteLine();
  
                  try
                  {
                      _context.Foo.Add(foo);
                      _context.SaveChanges();
  
                      _context.TradeItems.AddRange(new List&lt;Bar&gt;{});
                      _context.SaveChanges();
                      
                      transaction.Commit();
  </code></pre>
  <p>Since atomicity is a priority to me, I am OK doing it this way.</p>
  <p>However, should I do it async instead? <strong>What are the performance implications of BeginTransaction() vs BeginTransactionAsync()</strong></p>