Какое значение по умолчанию в machine.config для maxTimeout
(см. Пример), если в machine.config отсутствует элемент "system.transactions"?
<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);
}