Freigeben über


Behandeln von DataSet-Ereignissen

Das DataSet Objekt stellt 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. Dies tritt auf, wenn ein Ziel und eine Quelle DataRow denselben Primärschlüsselwert aufweisen und die EnforceConstraints-Eigenschaft auf true festgelegt ist. Wenn beispielsweise die Primärschlüsselspalten einer zusammengeführten Tabelle zwischen den Tabellen in den beiden DataSet Objekten identisch sind, wird eine Ausnahme ausgelöst, und das MergeFailed Ereignis wird ausgelöst. Das MergeFailedEventArgs an das MergeFailed Ereignis übergebene Objekt verfügt über eine Conflict Eigenschaft, die den Konflikt im Schema zwischen den beiden DataSet Objekten identifiziert, und eine Table Eigenschaft, die den Namen der Tabelle in Konflikt identifiziert.

Das folgende Codefragment veranschaulicht das Hinzufügen eines Ereignishandlers für das MergeFailed Ereignis.

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 initialisierte Ereignis

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

Die IsInitialized-Eigenschaft gibt true zurück, wenn die DataSet-Initialisierung abgeschlossen ist; andernfalls gibt sie false zurück. Die BeginInit-Methode, die die Initialisierung eines DataSet beginnt, setzt IsInitialized auf false. Die EndInit-Methode, die die Initialisierung des DataSet beendet, legt dieses auf true fest. Diese Methoden werden von der Visual Studio-Entwurfsumgebung verwendet, um ein DataSet von einer anderen Komponente verwendetes Element zu initialisieren. Sie werden sie nicht häufig in Ihrem Code verwenden.

Das "Disposed"-Ereignis

DataSet 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 Ereignisses verwenden, wenn Sie Code ausführen möchten, wenn die Dispose Methode aufgerufen wird. 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 entfernt werden können. Weitere Informationen finden Sie unter .NET Remoting.

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

Siehe auch