Freigeben über


Behandeln von DataSet-Ereignissen

Das DataSet -Objekt stellt die folgenden drei Ereignisse bereit: Disposed, Initializedund 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 truegesetzt 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 DataSetinitialisiert hat.

Die IsInitialized -Eigenschaft gibt true zurück, wenn die Initialisierung vom DataSet abgeschlossen wurde. Andernfalls wird falsezurückgegeben. Die BeginInit -Methode, die die Initialisierung eines DataSetstartet, setzt IsInitialized auf false. Durch die EndInit -Methode, die die Initialisierung eines DataSetbeendet, wird der Wert auf truegesetzt. 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

DasDataSet wird von der MarshalByValueComponent -Klasse abgeleitet, die sowohl die Dispose -Methode als auch das Disposed -Ereignis verfügbar macht. Mit dem Disposed-Ereignis wird ein Ereignishandler hinzugefügt, der in der Komponente auf das Eintreten des Disposed-Ereignisses lauscht. Sie können das Disposed-Ereignis eines DataSet verwenden, wenn beim Aufrufen der Dispose-Methode Code ausgeführt werden soll. Dispose gibt die von der 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 finden Sie unter .NET: Remoting.

Informationen zu anderen Ereignissen, die beim Arbeiten mit einem DataSet verfügbar sind, finden Sie unter Behandeln von DataTable-Ereignissen und Behandeln von DataAdapter-Ereignissen.

Siehe auch