我有一些代码:
private static void Delete(int PaxID)
{
using (SqlConnection conn = DataHelper.GetDBConnection())
{
using (SqlCommand cmd = DataHelper.GetSPCommand("spDeletePax",conn))
{
cmd.Parameters.AddWithValue("@PaxID", PaxID);
cmd.ExecuteNonQuery();
}
}
}
public static void DeletePaxes(List<int> ids, string bookingRef, string user)
{
using (TransactionScope ts = new DataHelper.CreateTransactionScope())
{
foreach (var i in ids)
{
Delete(i);
}
ts.Complete();
}
}
public static SqlConnection GetDBConnection()
{
SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DB"].ConnectionString);
conn.Open();
return conn;
}
public static TransactionScope CreateTransactionScope()
{
var transactionOptions = new TransactionOptions();
transactionOptions.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
transactionOptions.Timeout = TransactionManager.MaximumTimeout;
return new TransactionScope(TransactionScopeOption.Required, transactionOptions);
}
直到最近工作正常我没有更改任何代码,只是将我的源代码控制从 VSS 更改为 SVN,现在在 VS2012(而不是 2008)中打开了该项目。
如果我调用DeletePaxes(..)第一次删除有效,但第二次在连接到数据库时超时
我只是做错了还是 2012/.NET4/4.5 以不同的方式处理事务?我做了一些谷歌搜索并没有发现任何东西(因此在这里发布)
谁能告诉我可能发生了什么?我只是做错了吗?
DTC issetup 所以不要认为它 - 就像我说在我更改源代码控制之前工作正常。如果我将事务更改为默认值 - 不使用静态方法,它也会失败.. 删除事务工作正常我正在使用事务,因为我需要所有或没有删除工作..
谢谢