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).