Поделиться через


Обработка событий набора данных

Объект 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. Метод 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 объекты, которые могут быть удалены. Дополнительные сведения см. в статье о .NET Remoting.

Для получения информации о других событиях, доступных при работе с DataSet, см. разделы «Обработка событий DataTable» и «Обработка событий DataAdapter».

См. также