ADO.NET, Obtendo os valores atuais do banco

O ADO.NET sempre teve recursos ótimos para tratar a concorrência de dados, evitando acidentes. Quando identifica a concorrência gera uma mensagem de erro que pode ser tratada.

 

Porém não havia um recurso específico para, depois da mensagem de erro, comparar as versões do registro no client e no servidor para decidir o que fazer com o registro.

 

Pois agora há. No ADO.NET 2.0 foram criadas as FillLoadOptions que permitem algumas variações no preenchimento do DataSet.

 

Para este objetivo a option adequada é PreserveChanges. Neste caso o fill feito sobre o dataset vai preencher apenas os originalValues, sem desfazer as alterações já existentes.

 

Assim sendo, depois de descobrir que ocorreu um erro de concorrência, pode-se utilizar um Fill no dataSet com a loadOption de preserveChanges para buscar o valor atual no servidor, exibir os dois valores (do servidor e do usuário) na tela para o usuário decidir o que fazer.

 

Veja:

 

da.FillLoadOption = Data.LoadOption.PreserveChanges

 

Isso vale para o ADO.NET 2.0