Gestione di eventi di set di dati

L'oggetto DataSet fornisce tre eventi: Disposed, Initializede MergeFailed.

Evento MergeFailed

L'evento dell'oggetto DataSet usato più di frequente è MergeFailed, che viene generato quando gli schemi degli oggetti DataSet sono in conflitto. Questo problema si verifica quando gli oggetti DataRow di origine e di destinazione presentano lo stesso valore di chiave primaria e la proprietà EnforceConstraints è impostata su true. Se ad esempio le colonne relative alla chiave primaria di una tabella da unire sono uguali tra le tabelle dei due oggetti DataSet , si verifica un'eccezione e viene generato un evento MergeFailed . L'oggetto MergeFailedEventArgs passato all'evento MergeFailed include una proprietà Conflict che identifica il conflitto di schema tra i due oggetti DataSet e una proprietà Table che identifica il nome della tabella in conflitto.

Nel frammento di codice riportato di seguito viene illustrato come aggiungere un gestore per l'evento MergeFailed .

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

Evento Initialized

L'evento Initialized viene generato dopo che il costruttore di DataSet inizializza una nuova istanza del DataSet.

La proprietà IsInitialized restituisce true se l'inizializzazione del DataSet è stata completata; in caso contrario, restituisce false. Il metodo BeginInit , che avvia l'inizializzazione di un DataSet, imposta IsInitialized su false. Il metodo EndInit , che termina l'inizializzazione del DataSet, lo imposta su true. Questi metodi vengono usati nell'ambiente di progettazione di Visual Studio per inizializzare un DataSet usato da un altro componente. Non vengono comunemente usati nel codice.

Evento Disposed

DataSet è derivato dalla classe MarshalByValueComponent , che espone il metodo Dispose e l'evento Disposed . L'evento Disposed aggiunge un gestore eventi per restare in attesa dell'evento eliminato sul componente. È possibile usare l'evento Disposed di un oggetto DataSet se si vuole eseguire il codice quando viene chiamato il metodo Dispose. Dispose rilascia le risorse usate da MarshalByValueComponent.

Nota

Gli oggetti DataSet e DataTable ereditano da MarshalByValueComponent e supportano l'interfaccia ISerializable per l'esecuzione in remoto. Si tratta degli unici oggetti ADO.NET che è possibile eseguire in remoto. Per altre informazioni, vedere Servizi remoti .NET.

Per informazioni su altri eventi disponibili quando si usa un DataSet, vedere Gestione di eventi DataTable e Gestione di eventi DataAdapter.

Vedi anche