Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
879
Assunto : ADO.NET
Titulo: Resolvendo concorrência de dados

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



O .NET tipicamente faz a manipulação de dados de forma desconectada. Ou seja, um conjunto de dados é levado para a máquina do usuário, manipulado e depois gravado na base de dados.

A manipulação de dados de forma desconectada, porém, causa um volume maior de problemas de concorrência de dados. Ou seja : Dois usuários tentam alterar a informação ao mesmo tempo. Na verdade os problemas de concorrência deixam de se referir a "ao mesmo tempo" : No momento em que um usuário vai gravar, alguém alterou os dados antes, entre o tempo em que ele leu e o tempo em que ele está gravando.

O Framework .NET consegue perfeitamente identificar um problema quando este conflito acontece e avisa ao usuário que ocorreu um erro de concorrência de dados. Neste caso a aplicação precisa estar pronta para fazer o devido tratamento deste erro.

Neste caso o usuário tem em mãos uma informação que não é mais a informação atual no servidor de dados. A aplicação então deverá obter para o usuário a informação mais atual contida no banco de dados.

O que ocorre em seguida pode depender muito da lógica da aplicação. Porém a aplicação pode permitir que o usuário compare a informação que ele alterou com a informação que está no banco de dados e, afinal, decida qual ele deseja manter.

Veja como ficariam alguns trechos da aplicação :

Dim cmd As New SqlClient.SqlCommand

cmd.CommandText = "Select * from tabela where id=@id"
cmd.Parameters.AddWithValue("@id", id)

Até este ponto a aplicação se preparou para ir ao servidor e trazer as informações atuais sobre um determinado registro

Dim dt As New DataTable
dt.Load(cmd.ExecuteReader)

Essas informações são então carregadas em uma nova dataTable

minhatabela.Merge(dt, True)

É realizada a mesclagem da nova dataTable com a dataTable existente com o usuário. Neste ponto está o segredo : True significa manter as alterações do usuário. Então os dados vindos do servidor serão guardados na dataTable como originalValue, o que significa que na próxima gravação o usuário vai sobrepor a versão do servidor.

False, por outro lado, sobrepõe a versão do usuário com a versão do servidor.

Neste exemplo estamos vendo o caso individual de um registro, mas o dataAdapter também possui opções para realizar esta tarefa para uma quantidade maior de registros.


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
Nenhum comentário foi realizado ainda. Seja o primeiro !
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br