2013-10-15 27 views

回答

1

如果出於任何原因您需要自己管理交易,使用TransactionScope會更容易。它有幾個構造函數接受TimeSpan參數來設置超時。例如

using(var ts = new TransactionScope(TransactionScopeOption.Required, 
            TimeSpan.FromMinutes(1))) 
{ 
    using(var ctx = new MyContext()) 
    { 
     // Do stuff. 
    } 
    ts.Complete(); // Try - catch to catch TimeoutException 
} 

我很好奇你爲什麼要設置事務超時,而不是命令超時。

3

我的建議是使用Database.CommandTimeout

var timeout = 60; //or whatever value you need 
Ctxt.Database.CommandTimeout = timeout; 
using (var tran = Ctxt.Database.BeginTransaction()) 
{ 
    //do stuff 
} 
//this line can be skipped if you're about to dispose context 
Ctxt.Database.CommandTimeout = null; //setting back default timeout 

當然,你也可以很好地包裝在一些類。