6
使用類似的代碼如何在實體框架6 DbContext.Database.BeginTransaction中配置事務超時?
using (var tran = Ctxt.Database.BeginTransaction()) {
我如何設置事務超時值?
使用類似的代碼如何在實體框架6 DbContext.Database.BeginTransaction中配置事務超時?
using (var tran = Ctxt.Database.BeginTransaction()) {
我如何設置事務超時值?
如果出於任何原因您需要自己管理交易,使用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
}
我很好奇你爲什麼要設置事務超時,而不是命令超時。
我的建議是使用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
當然,你也可以很好地包裝在一些類。