Обработка событий наборов данныхHandling DataSet Events

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

Событие MergeFailedThe MergeFailed Event

Наиболее часто используемым событием объекта DataSet является MergeFailed, которое вызывается, когда возникает конфликт в схеме объектов DataSet , подвергнутых слиянию.The most commonly used event of the DataSet object is MergeFailed, which is raised when the schema of the DataSet objects being merged are in conflict. Это происходит, когда целевой и исходный объекты DataRow имеют одинаковое значение первичного ключа, и свойству EnforceConstraints присваивается значение true.This occurs when a target and source DataRow have the same primary key value, and the EnforceConstraints property is set to true. Например, если столбцы первичного ключа таблицы, подвергнутые слиянию, совпадают в таблицах двух объектов DataSet , то возникает исключение и вызывается событие MergeFailed .For example, if the primary key columns of a table being merged are the same between the tables in the two DataSet objects, an exception is thrown and the MergeFailed event is raised. Объект MergeFailedEventArgs , переданный событию MergeFailed , имеет свойство Conflict , определяющее конфликт в схеме между двумя объектами DataSet , и свойство Table , определяющее имя таблицы, участвующей в конфликте.The MergeFailedEventArgs object passed to the MergeFailed event have a Conflict property that identifies the conflict in schema between the two DataSet objects, and a Table property that identifies the name of the table in conflict.

В следующем фрагменте кода показан способ добавления обработчика события MergeFailed .The following code fragment demonstrates how to add an event handler for the MergeFailed event.

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);  
}  

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

Событие Initialized происходит после инициализации нового экземпляра DataSet конструктором DataSet.The Initialized event occurs after the DataSet constructor initializes a new instance of the DataSet.

Свойство IsInitialized возвращает значение true , если DataSet выполнил инициализацию. В противном случае оно возвращает значение false.The IsInitialized property returns true if the DataSet has completed initialization; otherwise it returns false. Метод BeginInit , который начинает инициализацию DataSet, присваивает свойству IsInitialized значение false.The BeginInit method, which begins the initialization of a DataSet, sets IsInitialized to false. Метод EndInit , который заканчивает инициализацию DataSet, присваивает свойству значение true.The EndInit method, which ends the initialization of the DataSet, sets it to true. Эти методы используются средой разработки Visual Studio для инициализации DataSet , которая используется другим компонентом.These methods are used by the Visual Studio design environment to initialize a DataSet that is being used by another component. Они редко используются в коде.You will not commonly use them in your code.

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

DataSet является производным от класса MarshalByValueComponent , который предоставляет и метод Dispose , и событие Disposed .DataSet is derived from the MarshalByValueComponent class, which exposes both the Dispose method and the Disposed event. Disposed Событие добавляет обработчик событий для прослушивания ликвидированного события в компоненте.The Disposed event adds an event handler to listen to the disposed event on the component. Если требуется выполнить код Disposed при Dispose вызове метода, можно использовать событие. DataSetYou can use the Disposed event of a DataSet if you want to execute code when the Dispose method is called. DisposeОсвобождает ресурсы, используемые MarshalByValueComponent.Dispose releases the resources used by the MarshalByValueComponent.

Примечание

Объекты DataSet MarshalByValueComponent и DataTable наследуются от и поддерживают интерфейсISerializable для удаленного взаимодействия.The DataSet and DataTable objects inherit from MarshalByValueComponent and support the ISerializable interface for remoting. Это единственные объекты ADO.NET, которые разрешают удаленное взаимодействие.These are the only ADO.NET objects that can be remoted. Дополнительные сведения см. в разделе удаленное взаимодействие .NET.For more information, see .NET Remoting.

Сведения о других событиях DataSet, доступных при работе с, см. в разделе Обработка событий DataTable и Обработка событий DataAdapter.For information about other events available when working with a DataSet, see Handling DataTable Events and Handling DataAdapter Events.

См. такжеSee also