Re[2]: Странный эффект DataSet функция Merge
От: Onizuka  
Дата: 30.04.07 17:35
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Onizuka, Вы писали:


O>>...


А>GetChanges возвращает копию датасета с изменениями.

А>При сохранении этой копии адаптер обновляет значение первичного ключа.
А>т.е.
А>было id = 1
А>стало id = N (следующее значение для данной таблицы в бд).
А>Слияние производится по значению первичного ключа.
А>Т.к. в исходном датасете строка имеет id = 1, а в датасете с изменениями id = N, то Merge добавит в исходный датасет еще одну строку с id = N.

А>Чтобы все получилось нужно удалить из исходного датасета все добавленные строки, а только потом делать Merge.



Хм... Этот вариант понятен, но что делать, если мы добавим строку в датасет, потом её изменим и только плосле этого синхронизируем с базой данных? Теоретически DataRowState после изменения будет равен Modified вместо Added. Или я мыслю неправильными категориями и нельза за 1 раз без синхронизацией с базой данных добавлять и изменять строки в таблице? Тогда возникает сразу следующий вопрос — Предположим мы добавим строку в дадасет и сразу ее удалим(DataRowState = Deleted) Т.е. при добавлении в датасет, первичный ключ предположим присвоится =1, а после синхронизации с базой, если в ней окажется такой же ключ, то строка с таким ключем сотрется??? Фигня какая-то получается.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.