/ / tiempo de espera en transacciones anidadas - c #, sql, entidad-marco, entidad-marco-4.1, transaccion

tiempo de espera en el objectscope anidado - c #, sql, entidad-marco, entidad-marco-4.1, transactionscope

Revisando un código que contiene un grupo de transacciones indirectamente anidadas. Me gustaría saber cómo se gestionan los tiempos de espera en loscopios anidados. Código de ejemplo

void RootMethod()
{
//default timeout is 60 seconds
using(TransactionScope scope = new TransactionScope())
{
/* Perform transactional work here */
SomeMethod();
scope.Complete();
}
}

void SomeMethod()
{
//set timeout to 30 seconds
TimeSpan timeout = TimeSpan.FromSeconds(30);
using(TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, timeout))
{
/* Perform transactional work here */
scope.Complete();
}
}

Estados MSDN - En una jerarquía anidada de TransactionScope, el tiempo de espera es la unión de todos los tiempos de espera. En efecto, el tiempo de espera más pequeño de todos los ámbitos en la jerarquía, tiene prioridad.

La primera afirmación dice unión de todos los tiempos muertos.pero la segunda declaración dice que es el más pequeño de todos los ámbitos. ¿Tengo razón al entender que el código anterior con un alcance anidado tiene un tiempo de espera predeterminado de 30 segundos y no de 90?

Respuestas

2 para la respuesta № 1

Ciertamente no ganó "t ser 90 segundos; esa es la suma, no la union. La unión de "ahora hasta 30 segundos" y "no hasta 60 segundos" es simplemente "ahora hasta 60 segundos". Por supuesto, debería ser bastante simple de verificar, bloqueándote deliberadamente. yo sospechar significa "intersección de todos los tiempos de espera", en cuyo caso lo que importa son los 30 segundos; porque: solo la transacción más externa tiene el poder de cometer, pero alguna la transacción en una colmena puede condenar la transacción completa (una reversión en cualquier nivel revierte la transacción más externa)