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. E

Ex.:

da.FillLoadOption = Data.LoadOption.PreserveChanges