title: Don't rollback the transaction on error in Entity Framework
body: <p>When an error occurs in an Entity Framework operation, any ambient transaction is aborted and I can't use it for more database work. As soon as I try to open a nested transaction scope, for example, it throws a <code>TransactionAbortedException</code> saying "The transaction has aborted."</p>
  
  <p>What can I do to prevent that when I expect errors and know how to continue?</p>
  
  <pre><code>using (var scope = new TransactionScope())
  {
      using (var ctx = new MyContext())
      {
          try
          {
              var x = ctx.MyEntities.FirstOrDefault();
          }
          catch
          {
              CreateTable();
              // Custom DDL command. I can't use EF migrations.
              // Should that fail or not help, I'm happy to see more exceptions later.
          }
          // TODO: Transaction scope is already aborted!
          ctx.MyEntities.Add(...);
      }
      scope.Complete();
  }
  </code></pre>
  
  <p>I could make a new <code>DbContext</code> instance if that helps.</p>