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.