powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Transaction для нескольких SqlDataAdapter
6 сообщений из 6, страница 1 из 1
Transaction для нескольких SqlDataAdapter
    #35928000
Suzeren
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема в следующем:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
GS.SQL.Open();
using (SqlTransaction txn = GS.SQL.BeginTransaction())
{
  GS.DAProject.DeleteCommand.Transaction = txn;
  GS.DAProject.InsertCommand.Transaction = txn;
  GS.DAProject.UpdateCommand.Transaction = txn;

  GS.DAExpert.DeleteCommand.Transaction = txn;
  GS.DAExpert.InsertCommand.Transaction = txn;
  GS.DAExpert.UpdateCommand.Transaction = txn;

  GS.DAWorks.DeleteCommand.Transaction = txn;
  GS.DAWorks.InsertCommand.Transaction = txn;
  GS.DAWorks.UpdateCommand.Transaction = txn;

  try
  { 
     GS.DAProject.Update(GS.DTProject);
     GS.DAExpert.Update(GS.DTExpert);
     GS.DAworks.Update(GS.DTWorks);
     txn.Commit();
  } 
  catch(Exception ex) 
  {
     txn.Rollback();
     GS.DTProject.RejectChanges();
     GS.DTExpert.RejectChanges();
     GS.DTWorks.RejectChanges();
  }
  finally
  {
    GS.SQL.Close();
  }
}


Ситуация такая... допустим ошибка произошла при обновлении второй таблицы по счету GS.DAExpert. В этом случае txn.Rollback() удачно отработает, и обновления откатятся на сервере. НО (!!!) в GS.DTProject добавленные строки останутся, потому что когда отправляли изменения на сервер внутри транзакции они отправились без ошибки и строки пометились как RowState.Original и GS.DTProject.RejectChanges() не работает... :( Как быть в этой ситуации?? Как откатить изменения еще и в тэйбле, при таком вот обновлении??
...
Рейтинг: 0 / 0
Transaction для нескольких SqlDataAdapter
    #35929363
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Завернуть в одну хранимку, и там же в одну транцакцию, чем не выход ?
...
Рейтинг: 0 / 0
Transaction для нескольких SqlDataAdapter
    #35929463
Ermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делай так.
Код: plaintext
1.
2.
         OleDbDataAdapter da = new OleDbDataAdapter(); //Создать dataAdapter
         da.AcceptChangesDuringUpdate = false; // не выполнять операцию AcceptChanges
...
Рейтинг: 0 / 0
Transaction для нескольких SqlDataAdapter
    #35930671
Suzeren
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо :) Все замечательно работает.
...
Рейтинг: 0 / 0
Transaction для нескольких SqlDataAdapter
    #35930752
OldWoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SuzerenСпасибо :) Все замечательно работает.
Это работать не может так как при откате Add записи записи станут Modified! В MSDN это все описано читай про AcceptChangesDuringUpdate
Примечание.
Задание для свойства AcceptChangesDuringUpdate значения false применяется ко всем изменениям данных, а не только к их вставкам. Если требуется изменить или удалить строки в одном и том же обновлении, предотвратив при этом вызов AcceptChanges только для вставок, то вместо задания для AccceptChangesDuringUpdate значения false, следует использовать обработчик событий для события RowUpdated объекта DataAdapter. В обработчике событий можно проверить свойство StatementType, чтобы определить, является ли изменение данных вставкой, и если это верно (true), установить для свойства Status объекта RowUpdatedEventArgs значение SkipCurrentRow. Дополнительные сведения и примеры см. в разделе Извлечение значений идентификаторов или автонумерации (ADO.NET).
...
Рейтинг: 0 / 0
Transaction для нескольких SqlDataAdapter
    #35940097
Suzeren
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OldWoker
Это работать не может так как при откате Add записи записи станут Modified! В MSDN это все описано читай про AcceptChangesDuringUpdate


Спасибо за замечание. Но мне принципиально именно откатить данные. То, какой вид они имеют потом - мне не важно. Т.е modified они или нет - меня совершенно не тревожит. Таков алгоритм. Но все равно, спасибо, ценное замечание. :)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Transaction для нескольких SqlDataAdapter
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]