Manipular eventos do DataSet

O objeto DataSet fornece três eventos: Disposed, Initialized e MergeFailed.

O evento MergeFailed

O evento mais usado do objeto DataSet é MergeFailed, que é gerado quando o esquema dos objetos do DataSet sendo mesclados está em conflito. Isso ocorre quando uma origem e um destino DataRow têm o mesmo valor da chave primária e a propriedade EnforceConstraints está definida como true. Por exemplo, se as colunas de chave primária de uma tabela que estiver sendo mesclada forem as mesmas entre as tabelas nos dois objetos do DataSet uma exceção será lançada e o evento MergeFailed gerado. O objeto MergeFailedEventArgs passado para o evento MergeFailed tem uma propriedade Conflict que identifica o conflito no esquema entre os dois objetos DataSet e uma propriedade Table que identifica o nome da tabela em conflito.

O fragmento de código a seguir demonstra como adicionar um manipulador de eventos para o 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);  
}  

O evento inicializado

O evento Initialized ocorre depois que o construtor do DataSet inicializa uma nova instância do DataSet.

A propriedade IsInitialized retornará true se o DataSet concluir a inicialização, caso contrário, retornará false. O método BeginInit, que inicia a inicialização de um DataSet, define IsInitialized como false. O métodoEndInit, que encerra a inicialização do DataSet, o define como true. Esses métodos são usados pelo ambiente de design do Visual Studio para inicializar um DataSet que está sendo usado por outro componente. Normalmente, não são utilizados em seu código.

O evento descartado

DataSet é derivado da classe MarshalByValueComponent, que expõe o método Dispose e o evento Disposed. O evento Disposed adiciona um manipulador de eventos para ouvir o evento descartado no componente. É possível usar o evento Disposed de um DataSet se quiser executar o código quando o método Dispose for chamado. Dispose libera os recursos utilizados pelo MarshalByValueComponent.

Observação

Os objetos DataSet e DataTable herdam de MarshalByValueComponent e dão suporte à interface ISerializable para comunicação remota. Esses são os únicos objetos ADO.NET que podem ser remotos. Para obter mais informações, consulte .NET Remoting.

Para obter mais informações sobre outros eventos disponíveis ao trabalhar com um DataSet, consulte Manipular eventos DataTable e Manipular eventos DataAdapter.

Confira também