コード例 #1
0
        /// <summary>
        /// Constructs an instance of an atom transaction scope.
        /// </summary>
        /// <param name="kind">Type of transaction scope.</param>
        /// <param name="conn">Connection to use for the transaction scope.</param>
        protected internal SqlStoreTransactionScope(StoreTransactionScopeKind kind, SqlConnection conn)
        {
            this.Kind = kind;
            _conn = conn;

            switch (this.Kind)
            {
                case StoreTransactionScopeKind.ReadOnly:
                    SqlUtils.WithSqlExceptionHandling(() =>
                    {
                        _tran = conn.BeginTransaction(IsolationLevel.ReadCommitted);
                    });
                    break;
                case StoreTransactionScopeKind.ReadWrite:
                    SqlUtils.WithSqlExceptionHandling(() =>
                    {
                        _tran = conn.BeginTransaction(IsolationLevel.RepeatableRead);
                    });
                    break;
                default:
                    // Do not start any transaction.
                    Debug.Assert(this.Kind == StoreTransactionScopeKind.NonTransactional);
                    break;
            }
        }
コード例 #2
0
        /// <summary>
        /// Constructs an instance of an atom transaction scope.
        /// </summary>
        /// <param name="kind">Type of transaction scope.</param>
        /// <param name="conn">Connection to use for the transaction scope.</param>
        protected internal SqlStoreTransactionScope(StoreTransactionScopeKind kind, SqlConnection conn)
        {
            this.Kind = kind;
            _conn     = conn;

            switch (this.Kind)
            {
            case StoreTransactionScopeKind.ReadOnly:
                SqlUtils.WithSqlExceptionHandling(() =>
                {
                    _tran = conn.BeginTransaction(IsolationLevel.ReadCommitted);
                });
                break;

            case StoreTransactionScopeKind.ReadWrite:
                SqlUtils.WithSqlExceptionHandling(() =>
                {
                    _tran = conn.BeginTransaction(IsolationLevel.RepeatableRead);
                });
                break;

            default:
                // Do not start any transaction.
                Debug.Assert(this.Kind == StoreTransactionScopeKind.NonTransactional);
                break;
            }
        }
コード例 #3
0
 /// <summary>
 /// Acquires a transactional scope on the connection.
 /// </summary>
 /// <param name="kind">Type of transaction scope.</param>
 /// <returns>Transaction scope on the store connection.</returns>
 public virtual IStoreTransactionScope GetTransactionScope(StoreTransactionScopeKind kind)
 {
     return(new SqlStoreTransactionScope(kind, _conn));
 }
コード例 #4
0
 /// <summary>
 /// Acquires a transactional scope on the connection.
 /// </summary>
 /// <param name="kind">Type of transaction scope.</param>
 /// <returns>Transaction scope on the store connection.</returns>
 public virtual IStoreTransactionScope GetTransactionScope(StoreTransactionScopeKind kind)
 {
     return new SqlStoreTransactionScope(kind, _conn);
 }