Реинтеграция изменений
Просмотрев измененную запись и успешно передав ожидающее изменение в БД. объект DataSet помечает эту запись как не содержащую ожидающих изменений. Таким образом, исключается многократная передача одного и того же изменения при повторных вызовах метода Update. Ранее я рассказал о методе GetCbanges класса DataSet. Код формы использует объект DataSet, возвращенный методом GetCbanges, при вызове метода Update объекта DataAclapter. После внесения обновлений объект DataSet помечает соответствующие записи объекта objDataSet(hanges как успешно обновившие БД.
Тем не менее объект objDataSet(hanges стоит отдельно от основного объекта DataSet формы. Нам нужно как-то объединить изменения, сделанные объектами DataAdapter в объекте objDataSetChanges, и внести их в основной объект DataSet. У класса DataSet имеется метод Merge, позволяющий объединять данные из двух объектов DataSet. Если записи объектов DataSet различаются, ADO.
NET просто помещает все записи в тот объект, метод Merge которого вы вызвали. В нашем случае записи объекта objDataSet(hanges ссылаются на те же данные, что и основной объект DataSet. Нам нужно, чтобы соответствующие записи основного объекта DataSet были перезаписаны записями объекта objDataSet(hanges. ADO. NET сравнивает значения основного ключа, хранящиеся в записях, и определяет, какие же записи ссылаются на один и тот же ряд данных. По умолчанию ADO.
NET перезаписывает ряд того объекта DataSet, метод Merge которого вы вызвали, Таким образом, изменения, вносимые объектами DataAdapter в объекты dsDelta DataSet, передаются основному объекту DataSet, и мы можем успешно обрабатывать последующие обновления.
Основы работы с Microsoft ADO.NET
Использование поставщика данных .NET
Метео


