使用类似的代码
using (var tran = Ctxt.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
当然,你可以很好地将它包装在某个类中。