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.