私はこのようにいくつかのコードを持っています:
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(..)を呼び出すと、最初の削除は機能しますが、DB への接続時に 2 回目のタイムアウトが発生します
私はこれを間違っているだけですか、それとも 2012/.NET4/4.5 ではトランザクションの処理が異なるのでしょうか? 私はいくつかのグーグルを実行しましたが、何も見つかりませんでした(したがって、ここに投稿します)
何が起こっているのか、誰でも教えてもらえますか? 私はこれを間違ってやっていますか?
DTC はセットアップされているので、そうは思わないでください - ソース管理を変更するまで正常に動作していたと言うように.. また、トランザクションをデフォルトのみに変更すると、静的メソッドを使用せずに失敗します.. トランザクションの削除は正常に動作します削除のすべてまたはどれも機能しない必要があるため、トランザクションを使用しています..
ありがとう