在不使用分布式事务的情况下优化此代码
本文关键字:情况下 优化 代码 事务 分布式 | 更新日期: 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