Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Не применять AcceptChanges после DataAdapter.Update. / 2 сообщений из 2, страница 1 из 1
20.10.2010, 11:27
    #36909078
mrB1n
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не применять AcceptChanges после DataAdapter.Update.
Несколько таблиц связаны внешними ключами, приходится делать обновления в определённом порядке. Везде пишут про два способа выполнить последовательно удаления, вставки и обновления: вызвать DataTable.GetChanges и вызвать DataTable.Select. Первый способ дублирует данные в новую таблицу, второй нет. С точки зрения экономии ресурсов, а также чтоб возвратить стандартными способами новый Id при вставке лучще использовать второй способ, но дело в том что после любого апдейта(скажем сделали сначала вставки) метод DataAdapter.Update() вызывает DataTable.AcceptChanges(), и теряет всю историю изменений, соответственно уже нет способа определить какие строки были изменены. Тем не менее способ типа этого описан и в книгах и в интернете:

Код: 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.
36.
37.
38.
39.
01.
connection.Open(); 
02.
try
03.
{ 
04.
daParent.Update(ds1.Tables["Parent"].Select("","",  
05.
DataViewRowState.Added));  
06.
daChild.Update(ds1.Tables["Child"].Select("","",  
07.
DataViewRowState.Added)); 
08.
daParent.Update(ds1.Tables["Parent"].Select("","",  
09.
DataViewRowState.ModifiedCurrent));  
10.
daChild.Update(ds1.Tables["Child"].Select("","",  
11.
DataViewRowState.ModifiedCurrent)); 
12.
daChild.Update(ds1.Tables["Child"].Select("","",  
13.
DataViewRowState.Deleted));  
14.
daParent.Update(ds1.Tables["Parent"].Select("","",  
15.
DataViewRowState.Deleted)); 
16.
} 
17.
finally
18.
{ 
19.
connection.Close(); 
20.
}

При таком подходе получается что после первого апдейта в 5 строке, все остальные просто не сработают. Как заставить подобный код работать?
...
Рейтинг: 0 / 0
21.10.2010, 03:39
    #36910945
mrB1n
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не применять AcceptChanges после DataAdapter.Update.
Хм, похоже это происходит только в MySqlConnector. Кто-то написал что это бага, а они дураки и "исправили" неподумав http://bugs.mysql.com/bug.php?id=54863 .
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Не применять AcceptChanges после DataAdapter.Update. / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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