Ejemplo n.º 1
0
#pragma warning restore CA1033 // Interface methods should be callable by child types

    /// <summary>
    /// Execute the operation synchronously.
    /// </summary>
    /// <param name="state">User defined state, usually used for logging.</param>
    /// <returns>System.Nullable&lt;System.Int32&gt;.</returns>
    public int?Execute(object?state = null)
    {
        var token = Prepare();
        OperationImplementation <TConnection, TTransaction> implementation = m_OperationBuilder.Implementation;

        return(token.Execute(implementation, state));
    }
Ejemplo n.º 2
0
        /// <summary>
        /// Executes the specified operation.
        /// </summary>
        /// <param name="executionToken">The execution token.</param>
        /// <param name="implementation">The implementation.</param>
        /// <param name="state">The state.</param>
        protected override int?Execute(OperationExecutionToken <OleDbConnection, OleDbTransaction> executionToken, OperationImplementation <OleDbConnection, OleDbTransaction> implementation, object state)
        {
            if (executionToken == null)
            {
                throw new ArgumentNullException("executionToken", "executionToken is null.");
            }
            if (implementation == null)
            {
                throw new ArgumentNullException("implementation", "implementation is null.");
            }

            var startTime = DateTimeOffset.Now;

            OnExecutionStarted(executionToken, startTime, state);

            try
            {
                var rows = implementation(m_Connection, m_Transaction);
                OnExecutionFinished(executionToken, startTime, DateTimeOffset.Now, rows, state);
                return(rows);
            }
            catch (Exception ex)
            {
                OnExecutionError(executionToken, startTime, DateTimeOffset.Now, ex, state);
                throw;
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Executes the specified operation.
        /// </summary>
        /// <param name="executionToken">The execution token.</param>
        /// <param name="implementation">The implementation.</param>
        /// <param name="state">The state.</param>
        /// <returns>System.Nullable&lt;System.Int32&gt;.</returns>
        protected override int?Execute(OperationExecutionToken <SQLiteConnection, SQLiteTransaction> executionToken, OperationImplementation <SQLiteConnection, SQLiteTransaction> implementation, object?state)
        {
            if (executionToken == null)
            {
                throw new ArgumentNullException(nameof(executionToken), $"{nameof(executionToken)} is null.");
            }
            if (implementation == null)
            {
                throw new ArgumentNullException(nameof(implementation), $"{nameof(implementation)} is null.");
            }

            var mode = DisableLocks ? LockType.None : (executionToken as SQLiteOperationExecutionToken)?.LockType ?? LockType.Write;

            var startTime = DateTimeOffset.Now;

            OnExecutionStarted(executionToken, startTime, state);

            IDisposable?lockToken = null;

            try
            {
                switch (mode)
                {
                case LockType.Read: lockToken = SyncLock.ReaderLock(); break;

                case LockType.Write: lockToken = SyncLock.WriterLock(); break;
                }

                var rows = implementation(m_Connection, m_Transaction);
                OnExecutionFinished(executionToken, startTime, DateTimeOffset.Now, rows, state);
                return(rows);
            }
            catch (Exception ex)
            {
                OnExecutionError(executionToken, startTime, DateTimeOffset.Now, ex, state);
                throw;
            }
            finally
            {
                if (lockToken != null)
                {
                    lockToken.Dispose();
                }
            }
        }
Ejemplo n.º 4
0
    /// <summary>
    /// Executes the specified operation.
    /// </summary>
    /// <param name="executionToken">The execution token.</param>
    /// <param name="implementation">The implementation.</param>
    /// <param name="state">The state.</param>
    /// <returns>System.Nullable&lt;System.Int32&gt;.</returns>
    protected override int?Execute(OperationExecutionToken <OleDbConnection, OleDbTransaction> executionToken, OperationImplementation <OleDbConnection, OleDbTransaction> implementation, object?state)
    {
        if (executionToken == null)
        {
            throw new ArgumentNullException(nameof(executionToken), $"{nameof(executionToken)} is null.");
        }
        if (implementation == null)
        {
            throw new ArgumentNullException(nameof(implementation), $"{nameof(implementation)} is null.");
        }

        var startTime = DateTimeOffset.Now;

        OnExecutionStarted(executionToken, startTime, state);

        try
        {
            using (var con = CreateConnection())
            {
                var rows = implementation(con, null);
                OnExecutionFinished(executionToken, startTime, DateTimeOffset.Now, rows, state);
                return(rows);
            }
        }
        catch (Exception ex)
        {
            OnExecutionError(executionToken, startTime, DateTimeOffset.Now, ex, state);
            throw;
        }
    }
Ejemplo n.º 5
0
 int?IOperationDataSource <TConnection, TTransaction> .Execute(OperationExecutionToken <TConnection, TTransaction> executionToken, OperationImplementation <TConnection, TTransaction> implementation, object state)
 {
     return(Execute(executionToken, implementation, state));
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Executes the specified operation.
 /// </summary>
 /// <param name="executionToken">The execution token.</param>
 /// <param name="implementation">The implementation.</param>
 /// <param name="state">The state.</param>
 protected internal abstract int?Execute(OperationExecutionToken <TConnection, TTransaction> executionToken, OperationImplementation <TConnection, TTransaction> implementation, object state);
Ejemplo n.º 7
0
        /// <summary>
        /// Executes the specified operation.
        /// </summary>
        /// <param name="executionToken">The execution token.</param>
        /// <param name="implementation">The implementation.</param>
        /// <param name="state">The state.</param>
        protected override int? Execute(OperationExecutionToken<OleDbConnection, OleDbTransaction> executionToken, OperationImplementation<OleDbConnection, OleDbTransaction> implementation, object state)
        {
            if (executionToken == null)
                throw new ArgumentNullException("executionToken", "executionToken is null.");
            if (implementation == null)
                throw new ArgumentNullException("implementation", "implementation is null.");

            var startTime = DateTimeOffset.Now;
            OnExecutionStarted(executionToken, startTime, state);

            try
            {
                using (var con = CreateConnection())
                {
                    var rows = implementation(con, null);
                    OnExecutionFinished(executionToken, startTime, DateTimeOffset.Now, rows, state);
                    return rows;
                }
            }
            catch (Exception ex)
            {
                OnExecutionError(executionToken, startTime, DateTimeOffset.Now, ex, state);
                throw;
            }
        }
Ejemplo n.º 8
0
 /// <summary>
 /// Executes the specified implementation.
 /// </summary>
 /// <param name="implementation">The implementation.</param>
 /// <param name="state">The state.</param>
 public int?Execute(OperationImplementation <TConnection, TTransaction> implementation, object state)
 {
     return(m_DataSource.Execute(this, implementation, state));
 }
Ejemplo n.º 9
0
        /// <summary>
        /// Executes the specified operation.
        /// </summary>
        /// <param name="executionToken">The execution token.</param>
        /// <param name="implementation">The implementation.</param>
        /// <param name="state">The state.</param>
        /// <returns>System.Nullable&lt;System.Int32&gt;.</returns>
        protected override int? Execute(OperationExecutionToken<SQLiteConnection, SQLiteTransaction> executionToken, OperationImplementation<SQLiteConnection, SQLiteTransaction> implementation, object state)
        {
            if (executionToken == null)
                throw new ArgumentNullException("executionToken", "executionToken is null.");
            if (implementation == null)
                throw new ArgumentNullException("implementation", "implementation is null.");

            var mode = DisableLocks ? LockType.None : (executionToken as SQLiteOperationExecutionToken)?.LockType ?? LockType.Write;

            var startTime = DateTimeOffset.Now;
            OnExecutionStarted(executionToken, startTime, state);

            IDisposable lockToken = null;
            try
            {
                switch (mode)
                {
                    case LockType.Read: lockToken = SyncLock.ReaderLock(); break;
                    case LockType.Write: lockToken = SyncLock.WriterLock(); break;
                }

                using (var con = CreateConnection())
                {
                    var rows = implementation(con, null);
                    OnExecutionFinished(executionToken, startTime, DateTimeOffset.Now, rows, state);
                    return rows;
                }
            }
            catch (Exception ex)
            {
                OnExecutionError(executionToken, startTime, DateTimeOffset.Now, ex, state);
                throw;
            }
            finally
            {
                if (lockToken != null)
                    lockToken.Dispose();
            }
        }