В C# я использую TransactionScope(). Если тайм-аут TransactionScope() совершает транзакцию или отменяется?Что происходит, когда тайм-аут TransactionScope
1
A
ответ
0
Стандартное значение времени ожидания составляет 10 минут. Если тайм-аут TransactionScope запущен, транзакция будет выполнять возврат. Если вы не совершили транзакцию, состояние не изменится (принципы ACID).
ACID-принципы Wiki: https://en.wikipedia.org/wiki/ACID
можно изменить тайм-аут в файле .config, используя maxTimeout. https://msdn.microsoft.com/en-us/library/system.transactions.configuration.machinesettingssection.maxtimeout(v=vs.110).aspx
0
Как указано в MSDN, транзакция прерывается, то есть откат и исключение TransactionAbortedException.
https://msdn.microsoft.com/en-us/library/ms149852%28v=vs.110%29.aspx https://msdn.microsoft.com/en-us/library/ee818746%28v=vs.110%29.aspx
Только одно из этих действий будет * нормальным * при условии, что никакая нормальная транзакция не должна быть таймаутом, и нет способа узнать, завершено ли действие, которое транзакция должна защитить (в конце концов, если она была завершена, почему транзакция не была выполнена до истечения таймаута?) –
Почему система должна совершить транзакцию, которая находится на середине обработки? Это почти гарантированно испортило данные и не служит никакой заметной цели. – usr