如果machine.config上没有“system.transactions”元素,则maxTimeout的machine.config中的默认值是什么(参见示例)?
<system.transactions> <machineSettings maxTimeout="??:??:??" /> </system.transactions>
我问这个是因为代码因以下异常而崩溃,似乎它与超时超时的事务有关,它在SaveChanges方法期间崩溃,我收到的异常如下:
The transaction associated with the current connection has completed but has not been disposed. The transaction must be disposed before the connection can be used to execute sql statements.
这是崩溃的代码片段:
using (TransactionScope transaction = TransactionHelper.CreateTransactionScope()) { using (EFContext efDBContext = new EFContext()) { try { efDBContext.Connection.Open(); foreach (MyEntity currentEntity in myEntities) { //Insertion } transaction.Complete(); } catch (Exception ex) { //Inspect current entity //Get Total Time of the run //Number of entities processed } finally { if (esfDBContext.Connection.State == ConnectionState.Open) esfDBContext.Connection.Close(); } } }
这是我创建TransactionScope的方法:
public static TransactionScope CreateTransactionScope(TransactionScopeOption option = TransactionScopeOption.required,IsolationLevel isolationLevel = IsolationLevel.ReadCommitted) { var transactionOptions = new TransactionOptions() { Timeout = TimeSpan.MaxValue,IsolationLevel = isolationLevel }; return new TransactionScope(option,transactionOptions); }
解决方法
默认= 10分钟.最大=
Infinity