DataAdapter и тразакция - как их совместить?
От: Аноним  
Дата: 12.11.05 15:03
Оценка:
Привет всем! Тему я завёл в форуме VS 2005, но она имеет и более обий смысл, поэтому даю здесь ссылку на неё
http://www.gotdotnet.ru/Forums/VS2005/236021.aspx

Кратко — если мы при помщи адаптера переносим данные на сервер внутри транзакции, то в случае отката транзакции получаем парадокс. Адаптер работает построчно и переходя к новой строке он переданной выставляет статус строки в DataRowState.Unchanged! Если транзакция откатилась, то как заставить адаптер то же "откатить" свои изменения статуса, что бы при повторном сохранении все не переданные строки были переданы!


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
DataAdapter и тразакция - как их совместить?
От: Аноним  
Дата: 12.11.05 16:27
Оценка:
У меня немного похожая проблема, может ты с ней уже сталкивался?
http://www.gotdotnet.ru/Forums/Data/236044.aspx


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: DataAdapter и тразакция - как их совместить?
От: kondrat  
Дата: 12.11.05 16:49
Оценка:
А получить изменения из датасета через GetChanges() и с изменениями залезть в датаадаптер не пробовали? В случае отката у Вас будет оригинальный датасет, в случае успешного занесения — не помню, что там делать (по моему Merge, а возможно, просто в оригинальном датасете сделать AcceptChanges).
Re: DataAdapter и тразакция - как их совместить?
От: Аноним  
Дата: 13.11.05 11:39
Оценка:
У меня в случае успеха окно закрывается. Но идею сейчас опробую! Что касатся "поста" о том что мнесённые данные не вызывают изменения, то это что то напутали с привязкой! Единственая проблема здесь если textbox один то изменения только после потери фокуса!


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: DataAdapter и тразакция - как их совместить?
От: Аноним  
Дата: 13.11.05 11:49
Оценка:
Идея объехать на кривой простую логику адаптера даёт тако рзуьтат. Если окно не закрывать то повторная посылка (adapter.Update()) приведет к другой ошибке "Concurency violetion ...". То бишь мы не так просты — они контролируют не изменил ли запись ещё кто нибудь! Супер. Как бы это дурдом выключить?


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: DataAdapter и тразакция - как их совместить?
От: Аноним  
Дата: 13.11.05 11:52
Оценка:
Кстати того же результата ( table.GetChanges()) можно добиться проще. Для этого надо установить своиство
DataAdapter.AcceptChangesDuringUpdate = false;



данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: DataAdapter и тразакция - как их совместить?
От: Аноним  
Дата: 14.11.05 08:52
Оценка:
Привет всем! Удивительно что эта тема не вызывает ни у кого желания обсудить! В книге Дэвида Сеппа «ADO.NET» на стр. 439 сказано – «некоторым разработчикам передать изменения в транзакции…. Рекомендуется ContinueUpdateOnError=false». Но что делать со статусами строк, которые уже скинулись?


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: DataAdapter и тразакция - как их совместить?
От: Аноним  
Дата: 14.11.05 09:11
Оценка:
>Привет всем! Удивительно что эта тема не вызывает ни у кого желания обсудить! В книге Дэвида Сеппа «ADO.NET» на стр. 439 сказано – «некоторым разработчикам передать изменения в транзакции…. Рекомендуется ContinueUpdateOnError=false». Но что делать со статусами строк, которые уже скинулись?

Вероятно, остальные надеются, что вы заглянете в MSDN, наберете в поиске что-то вроде "adapter optimistic", заглянете на первую ссылку ("Optimistic Concurrency") и прочитаете пункт "The DataAdapter.RowUpdated Event". Там рассказано, как пропустить подобную ошибку с помощью UpdateStatus.SkipCurrentRow.

Сам не пробовал (не было нужды), но документация вроде довольно логичная...

С уважением, Олег Аксенов.
MDNA


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: DataAdapter и тразакция - как их совместить?
От: Аноним  
Дата: 14.11.05 10:07
Оценка:
Я рад что присоединился столь квалифициированный пользователь. Но пропустив ошибку и откатив транзакцию мы получим следующую альтернативу ( я это детально исследовал на примере рписанном в начале) а) статусы не изменились ( у кого был до транзакции modified то так и остался) при повторном сохранении ошибка Concurency violatoion!
б) Статусы скинулись — ну тогда кранты (


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: DataAdapter и тразакция - как их совместить?
От: Аноним  
Дата: 14.11.05 10:34
Оценка:
Честно говоря, сейчас у меня нет времени подробно разбираться в проблеме.
Навскидку, я бы копировал данные перед сохранением и не мучался бы с построчной обработкой.

Реально, когда нужно отправить пакетный запрос на сервер, я обычно именно так и делаю — через OPENXML. И работает быстрее (не по одной строчке) и все происходит в рамках одной транзакции...

С уважением, Олег Аксенов.
MDNA


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: DataAdapter и тразакция - как их совместить?
От: Аноним  
Дата: 14.11.05 11:06
Оценка:
Получается, что реально медотом DataAdapter.Update и не воспользуешся! Удивительно то что аналогичная вещь в Delphi есть со 2-ой версии (1996 год!!!) и ни каких проблем не вызывает, только из за того что тем же авторм (Андерсом Хейльсбергом) реализовано без наворотов!


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: DataAdapter и тразакция - как их совместить?
От: Аноним  
Дата: 15.11.05 08:50
Оценка:
Прочитад стаью. У Сеппа есть аналогичный пример. Но это опять не про то! Нам нужно синхронизировать откат на сервере и откат у адаптера!


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.