Exemple #1
0
        /// <summary>开始事务</summary>
        /// <returns>剩下的事务计数</returns>
        public virtual Int32 BeginTransaction()
        {
            if (Disposed)
            {
                throw new ObjectDisposedException(this.GetType().Name);
            }

            if (TransactionCount <= 0)
            {
                TransactionCount = 0;
                _EntitySession.Clear();
            }
            TransactionCount++;
            if (TransactionCount > 1)
            {
                return(TransactionCount);
            }

            try
            {
                if (!Opened)
                {
                    Open();
                }
                Trans            = Conn.BeginTransaction();
                TransactionCount = 1;
                return(TransactionCount);
            }
            catch (DbException ex)
            {
                throw OnException(ex);
            }
        }
Exemple #2
0
        public static bool ExecuteSQL(string[] sqlString)
        {
            bool           flag        = true;
            SqlConnection  connection  = new Conn().SqlConnectionSystem();
            SqlCommand     command     = new SqlCommand();
            SqlTransaction transaction = connection.BeginTransaction();

            command.Connection  = connection;
            command.Transaction = transaction;
            try
            {
                foreach (string str in sqlString)
                {
                    if (str.Trim().Length != 0)
                    {
                        command.CommandText = str;
                        command.ExecuteNonQuery();
                    }
                }
                transaction.Commit();
            }
            catch
            {
                flag = false;
                transaction.Rollback();
            }
            finally
            {
                connection.Close();
            }
            return(flag);
        }
Exemple #3
0
        public static bool NonQuerySqlString(string SqlString)
        {
            //new com.jwsoft.common.EncryptDog.EncryptDog().IsAuthorization();
            bool           flag        = false;
            SqlConnection  connection  = new Conn().SqlConnectionSystem();
            SqlTransaction transaction = connection.BeginTransaction();
            SqlCommand     command     = new SqlCommand {
                Connection  = connection,
                Transaction = transaction,
                CommandText = SqlString
            };

            try
            {
                command.ExecuteNonQuery();
                transaction.Commit();
                flag = true;
            }
            catch (Exception exception)
            {
                transaction.Rollback();
                flag = false;
                throw exception;
            }
            finally
            {
                command.Dispose();
                connection.Close();
            }
            return(flag);
        }
Exemple #4
0
    public bool ExecuteResult(string sqlstr)
    {
        bool           flag;
        SqlConnection  connection  = new Conn().SqlConnectionSystem();
        SqlCommand     command     = new SqlCommand();
        SqlTransaction transaction = connection.BeginTransaction();

        command.Connection  = connection;
        command.Transaction = transaction;
        command.CommandText = sqlstr;
        command.ExecuteNonQuery();
        try
        {
            transaction.Commit();
            flag = true;
        }
        catch
        {
            transaction.Rollback();
            flag = false;
        }
        finally
        {
            connection.Close();
            command.Dispose();
        }
        return(flag);
    }
Exemple #5
0
        public void RollbackTwice()
        {
            var transaction = Conn.BeginTransaction();

            transaction.Rollback();
            Assert.That(() => transaction.Rollback(), Throws.Exception.TypeOf <InvalidOperationException>());
        }
        /// <summary>
        /// 开始事务
        /// </summary>
        /// <returns></returns>
        public DbTransaction BeginTransaction()
        {
            if (Debug)
            {
                WriteLog("开始事务:{0}", ID);
            }

            TransactionCount++;
            if (TransactionCount > 1)
            {
                return(Trans);
            }

            try
            {
                if (!Opened)
                {
                    Open();
                }
                Trans            = Conn.BeginTransaction();
                TransactionCount = 1;
                return(Trans);
            }
            catch (Exception ex)
            {
                throw OnException(ex);
            }
        }
Exemple #7
0
 public void BeginTransaction(IsolationLevel isolationLevel = IsolationLevel.ReadCommitted)
 {
     if (_transaction != null)
     {
         _transaction = Conn.BeginTransaction(isolationLevel);
     }
 }
Exemple #8
0
        public void CursorStatement()
        {
            using (var t = Conn.BeginTransaction()) {
                for (var x = 0; x < 5; x++)
                {
                    ExecuteNonQuery(@"INSERT INTO data (field_text) VALUES ('X')");
                }

                Int32 i       = 0;
                var   command = new NpgsqlCommand("DECLARE TE CURSOR FOR SELECT * FROM DATA", Conn);
                command.ExecuteNonQuery();
                command.CommandText = "FETCH FORWARD 3 IN TE";
                var dr = command.ExecuteReader();

                while (dr.Read())
                {
                    i++;
                }
                Assert.AreEqual(3, i);
                dr.Close();

                i = 0;
                command.CommandText = "FETCH BACKWARD 1 IN TE";
                var dr2 = command.ExecuteReader();
                while (dr2.Read())
                {
                    i++;
                }
                Assert.AreEqual(1, i);
                dr2.Close();

                command.CommandText = "close te;";
                command.ExecuteNonQuery();
            }
        }
 public void BeginTransaction(IsolationLevel isolationLevel = IsolationLevel.Serializable)
 {
     if (_transaction == null)
     {
         _transaction = Conn.BeginTransaction(isolationLevel);
     }
 }
Exemple #10
0
        /// <summary>
        /// Create view on edges
        /// </summary>
        /// <param name="tableSchema"> The Schema name of node table. Default(null or "") by "dbo".</param>
        ///  <param name="supperNodeName"> The name of supper node. </param>
        /// <param name="edgeViewName"> The name of supper edge. </param>
        /// <param name="edges"> The list of message of edges for merging.
        /// The message is stored in tuple, containing (node table name, edge column name).</param>
        /// <param name="edgeAttribute"> The attributes' names in the supper edge.</param>
        /// <param name="attributeMapping"> User-supplied attribute-mapping.
        ///  Type is List<Tuple<string, List<Tuple<string, string, string>>>>.
        ///  That is, every attribute in supper edge is mapped into a list of attributes,
        ///  with the message of <node table name, edge column name, attribute name>
        ///  If one attribute in supper edge need to be mapped into all the user-supplied edges's same-name attributes,
        ///  user can pass a null or empty parameter of  List<Tuple<string, string, string>>.
        ///  When "attributeMapping" is empty or null, the program will map the atrributes of supper edge
        ///  into all the same-name attributes of all the user-supplied edges.</param>
        public void CreateEdgeView(string tableSchema, string supperNodeName, string edgeViewName,
                                   List <Tuple <string, string> > edges, List <string> edgeAttribute,
                                   List <Tuple <string, List <Tuple <string, string, string> > > > attributeMapping = null)
        {
            supperNode = supperNodeName;
            var transaction = Conn.BeginTransaction();
            var command     = Conn.CreateCommand();

            command.CommandTimeout = 0;
            command.Transaction    = transaction;
#if DEBUG
            transaction.Commit();
#endif
            try
            {
                CreateEdgeViewDecoder(tableSchema, edgeViewName, edges, edgeAttribute, command, attributeMapping);
                updateEdgeViewMetaData(tableSchema, edgeViewName, command);
#if !DEBUG
                transaction.Commit();
#endif
            }
            catch (Exception error)
            {
                throw new EdgeViewException(error.Message);
            }
        }
Exemple #11
0
        public void RollbackWithNoTransaction()
        {
            var transaction = Conn.BeginTransaction();

            transaction.Rollback();
            transaction.Rollback();
        }
 public void BeginTransaction()
 {
     try
     {
         m_transaction = Conn.BeginTransaction();
     }
     catch { }
 }
Exemple #13
0
        public void TransactionCommit()
        {
            var tx = Conn.BeginTransaction();

            ExecuteNonQuery("INSERT INTO data (field_text) VALUES ('X')", tx: tx);
            tx.Commit();
            Assert.That(ExecuteScalar("SELECT COUNT(*) FROM data"), Is.EqualTo(1));
        }
Exemple #14
0
        /// <summary>
        /// Drop Edge View
        /// </summary>
        /// <param name="nodeViewSchema">The name of node view. Default(null or "") by "dbo".</param>
        /// <param name="nodeViewName">The name of node view.</param>
        /// <param name="externalTransaction">An existing SqlTransaction instance under which the drop edge view will occur.</param>
        public void DropNodeView(string nodeViewSchema, string nodeViewName, SqlTransaction externalTransaction = null)
        {
            SqlTransaction transaction = externalTransaction ?? Conn.BeginTransaction();
            var            command     = Conn.CreateCommand();

            command.Transaction = transaction;
            try
            {
                //drop view
                const string dropView = @"drop view [{0}]";
                command.CommandText = string.Format(dropView, nodeViewName);
                command.ExecuteNonQuery();

                //update metatable
                const string deleteNodeViewColumn = @"
                Delete from [{0}]  
                where [NodeViewColumnId] in
                (
                    Select columnId
                    From [{1}] NodeTableColumn
                    Where TableSchema = @schema and  TableName = @tablename and ColumnRole = @role
                )
                Delete from [{1}]
                Where TableSchema = @schema and  TableName = @tablename and ColumnRole = @role";
                command.Parameters.AddWithValue("schema", nodeViewSchema);
                command.Parameters.AddWithValue("tablename", nodeViewName);
                command.Parameters.AddWithValue("role", 4);
                command.CommandText = string.Format(deleteNodeViewColumn, MetadataTables[5], MetadataTables[1]);
                command.ExecuteNonQuery();

                const string deleteNodeView = @"
                Delete from [{0}]
                where NodeViewTableId in
                (
                    select tableid 
                    from [{1}]
                    where TableRole = @role and TableSchema = @schema and TableName = @tablename
                )
                delete from [{1}]
                where TableRole = @role and TableSchema = @schema and TableName = @tablename";
                command.Parameters["role"].Value = 1;
                command.CommandText = string.Format(deleteNodeView, MetadataTables[7], MetadataTables[0]);
                command.ExecuteNonQuery();
                if (externalTransaction == null)
                {
                    transaction.Commit();
                }
            }
            catch (Exception error)
            {
                if (externalTransaction == null)
                {
                    transaction.Rollback();
                }
                throw new NodeViewException("Drop node view:" + error.Message);
            }
        }
Exemple #15
0
        public void Commit()
        {
            ExecuteNonQuery("CREATE TEMP TABLE data (name TEXT)");
            var tx = Conn.BeginTransaction();

            ExecuteNonQuery("INSERT INTO data (name) VALUES ('X')", tx: tx);
            tx.Commit();
            Assert.That(ExecuteScalar("SELECT COUNT(*) FROM data"), Is.EqualTo(1));
        }
Exemple #16
0
        public void RollbackOnDispose()
        {
            var tx = Conn.BeginTransaction();

            ExecuteNonQuery("INSERT INTO data (field_text) VALUES ('X')", tx: tx);
            tx.Dispose();
            Assert.That(tx.Connection, Is.Null);
            Assert.That(ExecuteScalar("SELECT COUNT(*) FROM data"), Is.EqualTo(0));
        }
Exemple #17
0
 public void NestedTransaction()
 {
     using (Conn.BeginTransaction())
     {
         using (Conn.BeginTransaction())
         {
         }
     }
 }
Exemple #18
0
        /// <summary>
        /// 开始事务
        /// </summary>
        /// <param name="isolationLevel">事务隔离级别</param>

        public virtual void BeginTran(IsolationLevel isolationLevel)
        {
            if (Tran != null)
            {
                return;
            }
            Tran = Conn.BeginTransaction(isolationLevel);
            _dbContext.Database.UseTransaction(Tran);
        }
Exemple #19
0
        public void RollbackOnDispose()
        {
            ExecuteNonQuery("CREATE TEMP TABLE data (name TEXT)");
            var tx = Conn.BeginTransaction();

            ExecuteNonQuery("INSERT INTO data (name) VALUES ('X')", tx: tx);
            tx.Dispose();
            Assert.That(tx.Connection, Is.Null);
            Assert.That(ExecuteScalar("SELECT COUNT(*) FROM data"), Is.EqualTo(0));
        }
Exemple #20
0
        public void RollbackFailed()
        {
            var tx = Conn.BeginTransaction();

            ExecuteNonQuery("INSERT INTO data (field_text) VALUES ('X')", tx: tx);
            Assert.That(() => ExecuteNonQuery("BAD QUERY"), Throws.Exception);
            tx.Rollback();
            Assert.That(tx.Connection, Is.Null);
            Assert.That(ExecuteScalar("SELECT COUNT(*) FROM data"), Is.EqualTo(0));
        }
Exemple #21
0
 public void TransactionSetOk()
 {
     ExecuteNonQuery("INSERT INTO data (field_text) VALUES ('X')");
     using (var t = Conn.BeginTransaction())
     {
         var command = new NpgsqlCommand("select count(*) from data", Conn);
         command.Transaction = t;
         Object result = command.ExecuteScalar();
         Assert.AreEqual(1, result);
     }
 }
 /// <summary>
 /// 开始事务
 /// </summary>
 public void BeginTran()
 {
     if (this._dbTrans == null)
     {
         if (Conn.State == ConnectionState.Closed)
         {
             this.Conn.Open();
         }
         this._dbTrans   = Conn.BeginTransaction();
         this._committed = false;
     }
 }
Exemple #23
0
        /// <summary>
        /// 开始事务
        /// </summary>
        /// <param name="isolationLevel">事务隔离级别</param>

        public void BeginTran(IsolationLevel isolationLevel)
        {
            if (Tran != null)
            {
                return;
            }
            Conn = MyContext.Database.Connection;
            if (Conn.State == System.Data.ConnectionState.Closed)
            {
                Conn.Open();
            }
            Tran = Conn.BeginTransaction(isolationLevel);
        }
Exemple #24
0
 public bool BeginTransaction()
 {
     try
     {
         et = Conn.BeginTransaction();
         return(true);
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
         return(false);
     }
 }
Exemple #25
0
 public void BeginTransaction()
 {
     /*
      * 仅限 组件外 调用。
      */
     if (Tran != null)
     {
         throw XConfig.EC.Exception(XConfig.EC._090, "上下文中事务已开启,无需再次开启!");
     }
     if (AutoClose)
     {
         Conn.Open();
     }
     Tran = Conn.BeginTransaction();
 }
Exemple #26
0
        public void FailedTransactionCantRollbackToSavepointWithCustomTimeout()
        {
            var transaction = Conn.BeginTransaction();

            transaction.Save("TestSavePoint");

            using (var command = new NpgsqlCommand("SELECT unknown_thing", Conn)) {
                command.CommandTimeout = 1;
                try {
                    command.ExecuteScalar();
                } catch (NpgsqlException) {
                    transaction.Rollback("TestSavePoint");
                }
            }
        }
Exemple #27
0
        public void Rollback([Values(PrepareOrNot.NotPrepared, PrepareOrNot.Prepared)] PrepareOrNot prepare)
        {
            var tx  = Conn.BeginTransaction();
            var cmd = new NpgsqlCommand("INSERT INTO data (field_text) VALUES ('X')", Conn, tx);

            if (prepare == PrepareOrNot.Prepared)
            {
                cmd.Prepare();
            }
            cmd.ExecuteNonQuery();
            Assert.That(ExecuteScalar("SELECT COUNT(*) FROM data"), Is.EqualTo(1));
            tx.Rollback();
            Assert.That(tx.Connection, Is.Null);
            Assert.That(ExecuteScalar("SELECT COUNT(*) FROM data"), Is.EqualTo(0));
        }
Exemple #28
0
 public void MultipleRefCursorSupport()
 {
     ExecuteNonQuery(@"CREATE OR REPLACE FUNCTION testmultcurfunc() RETURNS SETOF refcursor AS 'DECLARE ref1 refcursor; ref2 refcursor; BEGIN OPEN ref1 FOR SELECT 1; RETURN NEXT ref1; OPEN ref2 FOR SELECT 2; RETURN next ref2; RETURN; END;' LANGUAGE 'plpgsql';");
     using (Conn.BeginTransaction()) {
         var command = new NpgsqlCommand("testmultcurfunc", Conn);
         command.CommandType = CommandType.StoredProcedure;
         using (var dr = command.ExecuteReader()) {
             dr.Read();
             Assert.That(dr.GetInt32(0), Is.EqualTo(1));
             dr.NextResult();
             dr.Read();
             Assert.That(dr.GetInt32(0), Is.EqualTo(2));
         }
     }
 }
Exemple #29
0
        public void TestSavePointWithSemicolon()
        {
            const String theSavePoint = "theSavePoint;";

            using (var transaction = Conn.BeginTransaction()) {
                transaction.Save(theSavePoint);

                ExecuteNonQuery("INSERT INTO data (field_text) VALUES ('savepointtest')");
                var result = ExecuteScalar("SELECT COUNT(*) FROM data WHERE field_text = 'savepointtest'");
                Assert.AreEqual(1, result);

                transaction.Rollback(theSavePoint);

                result = ExecuteScalar("SELECT COUNT(*) FROM data WHERE field_text = 'savepointtest'");
                Assert.AreEqual(0, result);
            }
        }
Exemple #30
0
        /// <summary>给命令设置事务和连接</summary>
        /// <param name="cmd">命令</param>
        /// <param name="execute">是否执行增删改</param>
        /// <returns></returns>
        public DbTransaction Check(DbCommand cmd, Boolean execute)
        {
            if (cmd.Transaction != null)
            {
                return(cmd.Transaction);
            }

            // 此时事务可能为空
            var tr = Tran;

            if (cmd.Connection != null && cmd.Connection != Conn)
            {
                return(tr);
            }

            cmd.Transaction = tr;
            cmd.Connection  = Conn;

            // 不要为查询打开事务
            if (!execute)
            {
                return(tr);
            }

            Executes++;

            if (tr != null)
            {
                return(tr);
            }

            //var ss = _Session;
            //if (!ss.Opened) ss.Open();

            tr = Tran = Conn.BeginTransaction(Level);
            cmd.Transaction = tr;
            cmd.Connection  = Conn;

            Level = tr.IsolationLevel;
            ID    = ++_gid;
            Log.Debug("Tran.Begin {0} {1}", ID, Level);

            return(tr);
        }