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);
        }
Esempio n. 2
0
 public void SetDb(EasyDb db)
 {
     this.db = db;
 }
Esempio n. 3
0
 public abstract Task ExecuteAsync(EasyDb db);