public async Task <bool> Execute(EasyDb db) { var currentConnectionStrategy = db.WrappedConnection.ConnectionStrategy; if (currentConnectionStrategy == ConnectionStrategy.Auto) { db.SetConnectionStrategy(ConnectionStrategy.Manual); } try { await db.WrappedConnection.OpenAsync(); using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { foreach (var operation in this.pendingOperations) { await operation(); } scope.Complete(); this.pendingOperations.Clear(); } return(true); } catch (Exception) { } finally { db.WrappedConnection.Close(); // reset connection strategy if (currentConnectionStrategy == ConnectionStrategy.Auto) { db.SetConnectionStrategy(ConnectionStrategy.Auto); } } return(false); }
public void SetDb(EasyDb db) { this.db = db; }
public abstract Task ExecuteAsync(EasyDb db);