Behandeln von 'DataSet'-Ereignissen (ADO.NET)

Aktualisiert: November 2007

Das DataSet-Objekt stellt die folgenden drei Ereignisse bereit: Disposed, Initialized und MergeFailed.

Das "MergeFailed"-Ereignis

Das am häufigsten verwendete Ereignis des DataSet-Objekts ist MergeFailed. Dieses Ereignis wird ausgelöst, wenn sich die Schemas der DataSet-Objekte, die zusammengeführt werden, widersprechen. Zu einem solchen Konflikt kommt es, wenn eine Ziel- und eine Quell-DataRow den gleichen Primärschlüsselwert besitzen und die EnforceConstraints-Eigenschaft auf true gesetzt ist. Wenn z. B. die zusammenzuführenden Primärschlüsselspalten einer Tabelle in den Tabellen der beiden DataSet-Objekte identisch sind, wird eine Ausnahme ausgegeben und das MergeFailed-Ereignis ausgelöst. Das MergeFailedEventArgs-Objekt, das an das MergeFailed-Ereignis übergeben wird, besitzt eine Conflict-Eigenschaft, die den Konflikt im Schema der beiden DataSet-Objekte kennzeichnet, sowie eine Table-Eigenschaft, die den Namen der Tabelle mit dem Konflikt angibt.

Das folgende Codefragment zeigt, wie ein Ereignishandler für das MergeFailed-Ereignis hinzugefügt werden kann.

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

Das "Initialized"-Ereignis

Das Initialized-Ereignis tritt ein, nachdem der DataSet-Konstruktor eine neue Instanz vom DataSet initialisiert hat.

Die IsInitialized-Eigenschaft gibt true zurück, wenn die Initialisierung vom DataSet abgeschlossen wurde. Andernfalls wird false zurückgegeben. Die BeginInit-Methode, die die Initialisierung eines DataSet startet, setzt IsInitialized auf false. Durch die EndInit-Methode, die die Initialisierung eines DataSet beendet, wird der Wert auf true gesetzt. Diese Methoden werden von der Visual Studio-Entwicklungsumgebung zum Initialisieren eines DataSet genutzt, das von einer anderen Komponente verwendet wird. Im Normalfall werden Sie diese Methoden in Ihrem Code nicht benötigen.

Das "Disposed"-Ereignis

Das DataSet wird von der MarshalByValueComponent-Klasse abgeleitet, die sowohl die Dispose-Methode als auch das Disposed-Ereignis verfügbar macht. Das Disposed-Ereignis fügt einen Ereignishandler hinzu, der die Komponente auf das Eintreten des Disposed-Ereignisses überwacht. Sie können das Disposed-Ereignis eines DataSet verwenden, wenn beim Aufrufen der Dispose-Methode Code ausgeführt werden soll. Disposegibt die von MarshalByValueComponent verwendeten Ressourcen frei.

Hinweis:

Das DataSet-Objekt und das DataTable-Objekt erben von MarshalByValueComponent und unterstützen die ISerializable-Schnittstelle für das Remoting. Dies sind die einzigen ADO.NET-Objekte, die remotingfähig sind. Weitere Informationen dazu finden Sie unter .NET-Remoting.

Informationen zu weiteren verfügbaren Ereignissen beim Arbeiten mit einem DataSet finden Sie unter Behandlung von 'DataTable'-Ereignissen (ADO.NET) und Umgang mit 'DataAdapter'-Ereignissen (ADO.NET).

Siehe auch

Weitere Ressourcen

'DataSets', 'DataTables' und 'DataViews' (ADO.NET)

Überprüfen von Daten

Abrufen und Ändern von Daten in ADO.NET