Обработка событий наборов данных
Объект 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.
Примечание.
DataTable
Объекты DataSet
наследуются от MarshalByValueComponent и поддерживают интерфейс для удаленного ISerializable взаимодействия. Это единственные объекты ADO.NET, которые разрешают удаленное взаимодействие. Дополнительные сведения см. в статье о удаленном взаимодействии .NET.
Сведения о других событиях, доступных при работе с нимDataSet
, см. в разделе "Обработка событий DataTable" и "Обработка событий DataAdapter".