有没有一种方法可以更好地优化此代码,而不使用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);
}
答案 0 :(得分:3)
如果数据库在删除记录时应该保持一致,为什么还要避免使用事务?在这里删除事务基本上有可能使数据库处于不一致的形式。
如果您只是想从代码中删除它,那么您可能想要在单个存储过程中尝试事务。以下是一些例子
http://www.codeproject.com/KB/database/sqlservertransactions.aspx
答案 1 :(得分:1)
只是提示 - 您可以使用bool result
代替int result
因为函数无论如何返回bool。