2015-02-10 5 views
0

Я много искал о «Откат транзакциях». Я нашел TransactionScope(), который был представлен Entity Framework 5 и Database.BeginTransaction(), который имеет функции commit и rollback, внедренные Entity Framework 6. Таким образом, возможен откат по базе данных (контекст).Могу ли я вернуть изменения в простой блок кода C# (а не контекст базы данных)?

Я хочу знать, можно ли отменить изменения в простом коде C#. (Сделайте часть кода транзакцией) Например, в блоке кода я добавляю элементы в список или изменяю значение переменной. Затем возникает исключение, можно ли отменять (отменять) изменения? Так что мой List становится пустым, а переменная получает свое первое значение?

+1

Очевидно, что вы можете вручную отменить изменения в блоке 'catch' ... Вы ищете хороший способ написать такой код или реализацию Undo/Redo OR или другую транзакционную поддержку? –

+0

Спасибо за ваш комментарий. На самом деле, я ищу транзакционную поддержку в коде C#. – butterfly

+1

Нет (комментарий, как правило, это не ответ): у C# нет никаких конструкций, которые напрямую поддерживают транзакции. .Net Framework поддерживают транзакцию для БД (как вы уже упоминали), но не намного больше. ([Распределенные транзакции] (http://www.bing.com/search?q=c%23+distributed+transaction) требуется еще больше кода для написания ... –

ответ

0

кажется, что вы ищете что-то называется программное обеспечение транзакционной памяти: http://en.wikipedia.org/wiki/Software_transactional_memory

Есть несколько реализаций вокруг, но AFAIK они борются с низкой производительностью, поэтому я сомневаюсь, что вы можете их вам в коде реального производства