private void UpdateRow(object param)
        {
            GFXDClientConnection conn = null;
            Product product = (Product)ObjectFactory.Create(ObjectType.Product);
            product.ProductId = Convert.ToInt64(param);

            try
            {
                conn = new GFXDClientConnection(ConnectionString);
                conn.Open();
                conn.BeginGFXDTransaction();

                DbController dbc = new DbController(conn);
                dbc.UpdateProduct(product);

                Product updatedProd = dbc.GetProduct(product.ProductId);

                conn.Commit();

                if (!product.Validate(updatedProd))
                    Fail("Product update validation failed.");
            }
            catch(GFXDException se)
            {
                if(!se.State.Equals("X0Z02"))
                    Fail(se);
                
                conn.Rollback();
            }
            catch (Exception e)
            {                
                Fail(e);
                conn.Rollback();
            }
        }
        private void UpdateRow(object param)
        {
            GFXDClientConnection conn = null;
            Product product           = (Product)ObjectFactory.Create(ObjectType.Product);

            product.ProductId = Convert.ToInt64(param);

            try
            {
                conn = new GFXDClientConnection(ConnectionString);
                conn.Open();
                conn.BeginGFXDTransaction();

                DbController dbc = new DbController(conn);
                dbc.UpdateProduct(product);

                Product updatedProd = dbc.GetProduct(product.ProductId);

                conn.Commit();

                if (!product.Validate(updatedProd))
                {
                    Fail("Product update validation failed.");
                }
            }
            catch (GFXDException se)
            {
                if (!se.State.Equals("X0Z02"))
                {
                    Fail(se);
                }

                conn.Rollback();
            }
            catch (Exception e)
            {
                Fail(e);
                conn.Rollback();
            }
        }
        private void UpdateRow(object param)
        {
            GFXDClientConnection conn = null;
            long customerId           = Convert.ToInt64(param);

            try
            {
                conn = new GFXDClientConnection(ConnectionString);
                conn.Open();
                conn.AutoCommit = false;

                DbController dbc = new DbController(conn);

                Log(String.Format("Begin customer update transaction. TID: [{0}]",
                                  Thread.CurrentThread.ManagedThreadId));

                conn.BeginGFXDTransaction(System.Data.IsolationLevel.ReadCommitted);

                Customer newCustData = (Customer)ObjectFactory.Create(ObjectType.Customer);
                newCustData.CustomerId = customerId;

                try
                {
                    Log(String.Format("Try retrieving customer record. TID: [{0}]",
                                      Thread.CurrentThread.ManagedThreadId));
                    Customer currCustData = dbc.GetCustomer(customerId);
                    if (currCustData != null)
                    {
                        Log(String.Format("Successfully retrieved customer record. TID: [{0}]",
                                          Thread.CurrentThread.ManagedThreadId));
                    }
                    else
                    {
                        Log(String.Format("Failed to customer record. TID: [{0}]",
                                          Thread.CurrentThread.ManagedThreadId));
                    }
                }
                catch (Exception e)
                {
                    Log(String.Format("Failed to retrieve customer record. TID: [{0}]. {1}",
                                      Thread.CurrentThread.ManagedThreadId,
                                      DbHelper.GetExceptionDetails(e, new StringBuilder()).ToString()));
                }
                try
                {
                    Log(String.Format("Try updating customer record. TID: [{0}]",
                                      Thread.CurrentThread.ManagedThreadId));
                    if (dbc.UpdateCustomer(newCustData) >= 1)
                    {
                        if (updateStarted == true)
                        {
                            Fail("Expected conflict exception when attempt to update the same record");
                            conn.Rollback();
                            return;
                        }
                        else
                        {
                            updateStarted = true;
                            Log(String.Format("Successfully updated customer record. TID: [{0}]",
                                              Thread.CurrentThread.ManagedThreadId));
                        }
                    }
                    else
                    {
                        Log(String.Format("Failed to update customer record. TID: [{0}]",
                                          Thread.CurrentThread.ManagedThreadId));
                    }
                }
                catch (GFXDException e)
                {
                    if (e.State.Equals("X0Z02"))
                    {
                        Log(String.Format("Update conflict exception occurred as expected. TID: [{0}]. {1}",
                                          Thread.CurrentThread.ManagedThreadId,
                                          DbHelper.GetExceptionDetails(e, new StringBuilder()).ToString()));
                        conn.Rollback();
                        return;
                    }
                    else
                    {
                        Fail("Expected conflict exception when attempt to update the same record");
                        conn.Rollback();
                        return;
                    }
                }
                try
                {
                    Log(String.Format("Try committing customer update transaction. TID: [{0}]",
                                      Thread.CurrentThread.ManagedThreadId));
                    conn.Commit();
                    Log(String.Format("Successfully committed customer update transaction. TID: [{0}]",
                                      Thread.CurrentThread.ManagedThreadId));
                }
                catch (Exception e)
                {
                    conn.Rollback();
                    Log(String.Format("Failed to commit customer update transaction. TID: [{0}]. {1}",
                                      Thread.CurrentThread.ManagedThreadId,
                                      DbHelper.GetExceptionDetails(e, new StringBuilder()).ToString()));
                }

                Customer updatedCustData = dbc.GetCustomer(newCustData.CustomerId);

                if (!newCustData.Validate(updatedCustData))
                {
                    Fail(String.Format("Customer update validation failed [{0}]",
                                       Thread.CurrentThread.ManagedThreadId));
                }
            }
            catch (Exception e)
            {
                conn.Rollback();
                Log(String.Format("Rolled back customer update transaction. TID: [{0}]",
                                  Thread.CurrentThread.ManagedThreadId));
                Fail(e);
            }
        }
Пример #4
0
        public void ExcuteTransaction(List<string> tables)
        {
            try
            {
                using (var conn = new GFXDClientConnection(ConnectionString))
                {
                    // Open connection, disable auto-commit, and start transaction
                    conn.Open();

                    conn.AutoCommit = false;
                    conn.BeginGFXDTransaction(IsolationLevel.ReadCommitted);
                    GFXDCommand cmd = conn.CreateCommand();
                    cmd.CommandType = CommandType.Text;


                    for (int i = 0; i < tables.Count; i++)
                    {
                        string[] words = tables[i].Split('.');
                        cmd.CommandText = "Select * from " + tables[i] + " order by " + words[1] + "ID"; ;

                        var adapter = cmd.CreateDataAdapter();
                        var table = new DataTable(tables[i]);
                        adapter.Fill(table);

                        int cnt = table.Rows.Count;
                        var idx = (int)table.Rows[cnt - 1].ItemArray[0];


                        var builder = new GFXDCommandBuilder(adapter);
                        adapter.InsertCommand = builder.GetInsertCommand();
                        // Create new product row
                        for (int ctx = 0; ctx < 10000; ctx++)
                        {
                            DataRow row = table.NewRow();
                            row[0] = ++idx;
                            for (int j = 1; j < (table.Rows[cnt - 1].ItemArray.Count()); j++)
                            {
                                row[j] = table.Rows[cnt - 1].ItemArray[j];
                            }
                            table.Rows.Add(row);
                        }
                        // Update the underlying table
                        adapter.Update(table);
                    }

                    // Commit transaction
                    conn.Commit();
                }  
            }
            catch (GFXDException ex)
            {
                string err = ex.Message;
            }
            catch (Exception ex)
            {
                string err = ex.Message;
            }
        }
        private void UpdateRow(object param)
        {            
            GFXDClientConnection conn = null;
            long customerId = Convert.ToInt64(param);

            try
            {
                conn = new GFXDClientConnection(ConnectionString);
                conn.Open();
                conn.AutoCommit = false;

                DbController dbc = new DbController(conn);

                Log(String.Format("Begin customer update transaction. TID: [{0}]", 
                    Thread.CurrentThread.ManagedThreadId));

                conn.BeginGFXDTransaction(System.Data.IsolationLevel.ReadCommitted);

                Customer newCustData = (Customer)ObjectFactory.Create(ObjectType.Customer);
                newCustData.CustomerId = customerId;

                try
                {
                    Log(String.Format("Try retrieving customer record. TID: [{0}]",
                        Thread.CurrentThread.ManagedThreadId));
                    Customer currCustData = dbc.GetCustomer(customerId);
                    if(currCustData != null)
                        Log(String.Format("Successfully retrieved customer record. TID: [{0}]",
                            Thread.CurrentThread.ManagedThreadId));
                    else
                        Log(String.Format("Failed to customer record. TID: [{0}]",
                            Thread.CurrentThread.ManagedThreadId));
                }
                catch(Exception e)
                {
                    Log(String.Format("Failed to retrieve customer record. TID: [{0}]. {1}",
                        Thread.CurrentThread.ManagedThreadId,
                        DbHelper.GetExceptionDetails(e, new StringBuilder()).ToString()));
                }
                try
                {                    
                    Log(String.Format("Try updating customer record. TID: [{0}]",
                        Thread.CurrentThread.ManagedThreadId));
                    if (dbc.UpdateCustomer(newCustData) >= 1)
                    {
                        if (updateStarted == true)
                        {
                            Fail("Expected conflict exception when attempt to update the same record");
                            conn.Rollback();
                            return;
                        }
                        else
                        {
                            updateStarted = true;
                            Log(String.Format("Successfully updated customer record. TID: [{0}]",
                                Thread.CurrentThread.ManagedThreadId));
                        }
                    }
                    else
                        Log(String.Format("Failed to update customer record. TID: [{0}]",
                            Thread.CurrentThread.ManagedThreadId));
                }
                catch(GFXDException e)
                {
                    if (e.State.Equals("X0Z02"))
                    {
                        Log(String.Format("Update conflict exception occurred as expected. TID: [{0}]. {1}",
                            Thread.CurrentThread.ManagedThreadId,
                            DbHelper.GetExceptionDetails(e, new StringBuilder()).ToString()));
                        conn.Rollback();
                        return;
                    }
                    else
                    {
                        Fail("Expected conflict exception when attempt to update the same record");
                        conn.Rollback();
                        return;
                    }
                }
                try
                {
                    Log(String.Format("Try committing customer update transaction. TID: [{0}]",
                        Thread.CurrentThread.ManagedThreadId));
                    conn.Commit();
                    Log(String.Format("Successfully committed customer update transaction. TID: [{0}]",
                        Thread.CurrentThread.ManagedThreadId));
                }
                catch (Exception e)
                {
                    conn.Rollback();
                    Log(String.Format("Failed to commit customer update transaction. TID: [{0}]. {1}",
                        Thread.CurrentThread.ManagedThreadId, 
                        DbHelper.GetExceptionDetails(e, new StringBuilder()).ToString()));
                }

                Customer updatedCustData = dbc.GetCustomer(newCustData.CustomerId);     
                
                if (!newCustData.Validate(updatedCustData))
                    Fail(String.Format("Customer update validation failed [{0}]", 
                        Thread.CurrentThread.ManagedThreadId));
            }
            catch (Exception e)
            {
                conn.Rollback();
                Log(String.Format("Rolled back customer update transaction. TID: [{0}]",
                        Thread.CurrentThread.ManagedThreadId));
                Fail(e);
            }
        }