Любопытно, есть ли поддержка транзакций на простых объектах С#? Как
using (var transaction = new ObjectTransaction(obj))
{
try
{
obj.Prop1 = value;
obj.Prop2 = value;
obj.Recalculate(); // may fire exception
transaction.Commit(); // now obj is saved
}
except
{
transaction.Rollback(); // now obj properties are restored
}
}
Просто чтобы сделать ответы более полезными;-) есть ли что-то подобное на других языках?
Обновление STM: вот что он утверждает:
atomic {
x++;
y--;
throw;
}
оставит x/y неизменным, включая вызовы с цепными методами. Похоже, что я прошу. По крайней мере, это очень интересно. Я думаю, что это достаточно близко. Кроме того, на других языках есть похожие вещи, например Haskell STM. Заметьте, я не говорю, что он должен использоваться для производства; -)