Concorrências de dados com o ADO.NET - parte II

Esse artigo discute o armazenamento e atualização de dados no DataSet.

Clique aqui para ler todos os artigos desta edição

Concorrências de dados com o ADO.NET – parte II

por John Papa

Este artigo discute

Este artigo usa as seguintes tecnologias:

·Armazenamento e atualização de dados no DataSet

ADO.NET, C#

 

Download:

DataPoints0410.exe (145KB)

Chapéu

ADO.NET

 

 

O desenvolvimento corporativo vem tendendo a um modelo desconectado nos últimos anos, e no desenvolvimento em ADO.NET não é diferente. Embora o modelo desconectado do DataSet do ADO.NET ofereça grande flexibilidade, a adaptabilidade também significa um controle menos rigoroso sobre atualizações de dados do que o que é possível no modelo de acesso a dados conectado. Um dos problemas relacionados é a concorrência de dados. Neste artigo enfocarei as violações de concorrência, que ocorrem quando várias linhas podem ser salvas no banco de dados em um único lote.

Quando ocorre uma violação de concorrência, a propriedade ContinueUpdateOnError de SqlDataAdapter informa a SqlDataAdapter para que gere uma exceção ou ignore a violação de concorrência. Demonstrarei como mostrar exatamente porque ocorreu uma violação de concorrência, definindo a propriedade ContinueUpdateOnError como verdadeira e usando uma série de DataViews ligados a objetos DataGrid do ASP.NET. Esses DataGrids usarão enumeradores DataViewRowState para mostrar as alterações feitas em um DataSet.

O SqlDataAdapter também possui alguns eventos, inclusive RowUpdating e RowUpdated, que podem ser bastante práticos. Para ilustrar sua utilização, mostrarei também como lidar com concorrência, criando um handler para o evento RowUpdated.

No artigo do mês passado, descrevi o tratamento de violações de concorrência e apresentei um exemplo de violação que ocorreu quando uma única linha foi atualizada de uma vez. Nessa situação, a definição da propriedade ContinueUpdateOnError de SqlDataAdapter como falsa informou ao SqlDataAdapter para gerar uma exceção assim que fosse encontrada uma violação de concorrência. Essa técnica é ideal ao salvar uma única linha ou quando se estiver tentando salvar várias linhas e quiser que ou todas sejam confirmadas ou que todas falhem. Contudo, se você quiser salvar as linhas que não encontrarem violações de concorrência e exibir as linhas que causarem tais violações, deverá usar outra técnica.

 

Planejamento para concorrências

Os exemplos apresentados aqui usam concorrências otimistas; portanto, os dados somente são bloqueados durante a atualização. Isto deixa tempo de sobra para que os usuários leiam os mesmos dados, tentem atualizá-los e colidam uns com os outros. Dessa forma, é importante implementar a detecção de violações de concorrência, que captura as tentativas de modificação de registros de um usuário que já foi modificado desde a última vez que os dados foram recuperados por esse usuário."

[...] continue lendo...
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados