![]() |
|
Модераторы: gambit |
![]()
|
|
| mr.Anderson |
|
||||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
При работе с БД через Entities существует возможность открыть транзакцию, не вызывая метод AcceptAllChanges() у объекта класса ObjectContext. К примеру, так:
В результате получим открытую транзакцию, которую можно будет воплотить в реальность, вызвав тот самый AcceptAllChanges(). Вопрос такой: а как откатить эту транзакцию по требованию пользователя? В MSDN я нашел следующее:
То есть, пока я вижу только один способ реализации метода отката транзакции - это попытка затолкать в базу нечто, что там уже существует. А есть менее корявые методы? |
||||
|
|||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 3 Всего: 24 |
а если просто закрыть транзакцию не вызывая метод AcceptAllChanges()?
|
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 8 Всего: 118 |
а я вот не понял зачем так делать вообще..
чем плохо:
собственно я думаю можно вернуть эту tr, не вызывая Dispose() для неё... -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Экскалупатор, жуть как логично. Вопрос состоял в том, каким образом это сделать))
Появилась еще идея создать на сервере хранимую процедуру, описать ее как-то так:
И потом звать ее, когда понадобится. Вопрос, повлияет ли это корректно на состояние объекта ObjectContext. Добавлено через 8 минут и 13 секунд Поглядел TransactionScope, там есть возможность завершить транзакцию и завершить с индикацией, что все, произошедшее внутри транзакции, выполнено корректно. Значит, как я понял, вызов Dispose() не будет откатывать изменения? А просто "проинформирует" об этом? Вопрос об откате транзакции все еще открыт. |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 8 Всего: 118 |
с хранимками не прокатит, по крайней мере в MSSQL, почитайте про scope-ы -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 3 Всего: 24 |
а почему это не подходит?
открыл книгу про ADO.NET, раздел транзакции, там написано: "транзакция фиксируется или откатывается с помощью метода Commit или Rollback объекта транзакции". ROLLBACK TRANSACTION (Transact-SQL) Transaction.Rollback - метод |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 8 Всего: 118 |
Экскалупатор, при чем там ado.net ? Если у вас например MSSQL надо читать про scope (область применения) ... в общем на sql.ru и в книгах лучше пояснят.
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |