/// <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; } }
/// <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)); }
/// <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); }