Condividi tramite


Gestione degli eventi di DataSet (ADO.NET)

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

Evento MergeFailed

L'evento dell'oggetto DataSet utilizzato 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 utilizzati nell'ambiente di progettazione di Visual Studio per inizializzare un DataSet utilizzato da un altro componente. Non vengono comunemente utilizzati 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 utilizzare l'evento Disposed di un oggetto DataSet se si desidera eseguire il codice quando viene chiamato il metodo Dispose. Dispose rilascia le risorse utilizzate dall'oggetto MarshalByValueComponent.

NotaNota

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 ulteriori informazioni, vedere Remote Objects.

Per informazioni sugli altri eventi disponibili quando si utilizza un DataSet, vedere Gestione degli eventi di DataTable (ADO.NET) e Gestione degli eventi di DataAdapter (ADO.NET).

Vedere anche

Altre risorse

DataSet, DataTable e DataView (ADO.NET)

Convalida dei dati

Recupero e modifica di dati in ADO.NET