C# 在不使用分布式事务的情况下优化此代码
有没有一种方法可以使这段代码在不使用TransactionScope的情况下比现在更优化C# 在不使用分布式事务的情况下优化此代码,c#,asp.net,C#,Asp.net,有没有一种方法可以使这段代码在不使用TransactionScope的情况下比现在更优化 public static bool DeleteItem(int cusID) { int result = 0; using (OleDbConnection myConnection = new OleDbConnection(AppConfiguration.ConnectionString)) { string de
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);
}
如果在删除记录时数据库应该是一致的,为什么要避免事务?在这里删除事务基本上有可能使数据库变成不一致的形式 如果您只是想将其从代码中删除,那么可能需要在单个存储过程中尝试事务。这里有一些例子
如果删除记录时假设数据库是一致的,为什么要避免事务?在这里删除事务基本上有可能使数据库变成不一致的形式 如果您只是想将其从代码中删除,那么可能需要在单个存储过程中尝试事务。这里有一些例子
只是一个提示-您可以使用
bool result
而不是int result
原因函数返回bool。只是一个提示-您可以使用bool result
而不是int result
原因函数返回bool。为什么?怎么了?速度慢吗?OleDbCommand ctor的FWIW:允许指定事务。我也更喜欢使用。谢谢pst。我刚被要求优化这段代码,你们能帮我在事务上使用阻塞吗?@Kragen,我刚被要求优化它。我没有看到太多需要优化的地方,所以我想我应该问问专家。删除行是一个非常快的操作,如果速度很慢,那就很奇怪了。如果是这样,可能表上没有cusID列的索引。为什么?怎么了?速度慢吗?OleDbCommand ctor的FWIW:允许指定事务。我也更喜欢使用。谢谢pst。我刚被要求优化这段代码,你们能帮我在事务上使用阻塞吗?@Kragen,我刚被要求优化它。我没有看到太多需要优化的地方,所以我想我应该问问专家。删除行是一个非常快的操作,如果速度很慢,那就很奇怪了。如果是这样,可能cusID列的表上没有索引。我不想删除该事务。只是我不想使用TransactionScope,因为出于某种原因它不能在DB2上工作。我想我已经被要求使用显式事务优化代码了。看看这些东西是否能进一步帮助你我不想删除事务。只是我不想使用TransactionScope,因为出于某种原因它不能在DB2上工作。我想我已经被要求使用显式事务来优化代码了。看看这些东西是否能进一步帮助您