Обработка событий DataSet (ADO.NET)

Объект DataSet предоставляет три события: Disposed, Initialized и MergeFailed.

Событие MergeFailed

Наиболее часто используемым событием объекта DataSet является MergeFailed, которое вызывается, когда возникает конфликт в схеме объектов DataSet, подвергнутых слиянию. Это происходит, когда целевой и исходный объекты DataRow имеют одинаковое значение первичного ключа, и свойству EnforceConstraints присваивается значение true. Например, если столбцы первичного ключа таблицы, подвергнутые слиянию, совпадают в таблицах двух объектов DataSet, то возникает исключение и вызывается событие MergeFailed. Объект MergeFailedEventArgs, переданный событию MergeFailed, имеет свойство Conflict, определяющее конфликт в схеме между двумя объектами DataSet, и свойство Table, определяющее имя таблицы, участвующей в конфликте.

В следующем фрагменте кода показан способ добавления обработчика события MergeFailed.

AddHandler workDS.MergeFailed, New MergeFailedEventHandler( _
  AddressOf DataSetMergeFailed)

Private Shared Sub DataSetMergeFailed(  _
  sender As Object,args As MergeFailedEventArgs)
  Console.WriteLine("Merge failed for table " & args.Table.TableName)
  Console.WriteLine("Conflict = " & args.Conflict)
End Sub
workDS.MergeFailed += new MergeFailedEventHandler(DataSetMergeFailed);

private static void DataSetMergeFailed(
  object sender, MergeFailedEventArgs args)
{
  Console.WriteLine("Merge failed for table " + args.Table.TableName);
  Console.WriteLine("Conflict = " + args.Conflict);
}

Инициализированное событие

Событие Initialized происходит после инициализации нового экземпляра DataSet конструктором DataSet.

Свойство IsInitialized возвращает значение true, если DataSet выполнил инициализацию. В противном случае оно возвращает значение false. Метод BeginInit, который начинает инициализацию DataSet, присваивает свойству IsInitialized значение false. Метод EndInit, который заканчивает инициализацию DataSet, присваивает свойству значение true. Эти методы используются средой разработки Visual Studio для инициализации объекта DataSet, который используется другим компонентом. Они редко используются в коде.

Удаленное событие

DataSet является производным от класса MarshalByValueComponent, который предоставляет и метод Dispose, и событие Disposed. Событие Disposed добавляет обработчик события для прослушивания удаленного события компонента. Событие Disposed объекта DataSet может быть использовано в том случае, если необходимо выполнять какой-либо код при вызове метода Dispose . Метод Dispose освобождает все ресурсы, занятые объектом MarshalByValueComponent.

ПримечаниеПримечание

Объекты DataSet и DataTable наследуются от MarshalByValueComponentи поддерживают интерфейс ISerializable для удаленного взаимодействия.Это единственные объекты ADO.NET, которые разрешают удаленное взаимодействие.Дополнительные сведения см. в разделе Remote Objects.

Сведения об остальных событиях, доступных при работе с DataSet, см. в разделах Обработка событий DataTable (ADO.NET) и Обработка событий DataAdapter (ADO.NET).

См. также

Другие ресурсы

Объекты DataSet, DataTable и DataView (ADO.NET)

Проверка данных

Получение и изменение данных в ADO.NET