在不使用分布式事务的情况下优化此代码

本文关键字:情况下 优化 代码 事务 分布式 | 更新日期: 2023-09-27 17:50:27

有没有一种方法可以使这段代码比现在更优化,而不使用TransactionScope ?

public static bool DeleteItem(int cusID)
    {
        int result = 0;
        using (OleDbConnection myConnection = new OleDbConnection(AppConfiguration.ConnectionString))
        {
            string delOrders= "DELETE FROM ORDERS WHERE cusID=?";
            string delCustomer= "DELETE FROM CUSTOMERS WHERE cusID=?";
            OleDbCommand myCommand = null;
            OleDbTransaction tran = null;
            try
            {
                myConnection.Open();
                tran=myConnection.BeginTransaction();

                using (myCommand = new OleDbCommand(delOrders, myConnection))
                {
                    myCommand.Parameters.Add("cusID", cusID);
                    myCommand.Transaction = tran;
                    myCommand.ExecuteNonQuery();
                }
                using (myCommand = new OleDbCommand(delCompany, myConnection))
                {
                    myCommand.Parameters.Add("cusID", cusID);
                    myCommand.Transaction = tran;
                    myCommand.ExecuteNonQuery();
                }
                tran.Commit();
                result = 1;
            }
            catch (OleDbException ex)
            {
                tran.Rollback();
                throw ex;
            }
            finally
            {
                myConnection.Close();
            }
        }
        return (result>0);
    }

在不使用分布式事务的情况下优化此代码

如果在删除记录时数据库应该是一致的,为什么要避免事务呢?从本质上讲,在这里删除事务有可能使数据库处于不一致的状态。

如果你只是想从代码中删除它,那么你可能想在单个存储过程中尝试事务。http://www.codeproject.com/KB/database/sqlservertransactions.aspx

http://msdn.microsoft.com/en-us/library/ms188929.aspx

只是一个提示-您可以使用bool result而不是int result,因为函数无论如何都会返回bool