2011-05-12 2 views
1

Pourquoi ADO.NET lance-t-il DBConccurencyException, lorsque j'essaie de mettre à jour une ligne déjà supprimée par un autre processus, au lieu de simplement ignorer la ligne supprimée?ADO.NET DBConcurrencyException - Essayer de mettre à jour une ligne déjà supprimée

Existe-t-il une option disponible dans ADO.NET pour ignorer ce fait?

J'utilise SqlCommandBuilder avec ConflictOption ensemble à ConflictOption.OverwriteChanges.

+1

Ceci est voulu. Pourquoi ne pas gérer l'exception et continuer gracieusement? – Darbio

+0

Avez-vous une source pour votre hypothèse :)? – Rookian

+0

http://msdn.microsoft.com/en-us/magazine/cc163924.aspx jetez un oeil au code de la figure 3 ... – Darbio

Répondre

1

Vous pouvez utiliser l'énumération DataViewRowState pour sélectionner uniquement les lignes modifiées.

var rowsToUpdate = 
      dataTable.Select(null, null, DataViewRowState.ModifiedOriginal); 
+0

comment cela fonctionne-t-il? ADO.NET interroge-t-il la ligne immédiatement avant de la mettre à jour? – Rookian

+0

ado.net vérifie l'état avant la mise à jour. Si la ligne a été supprimée, elle ne peut plus y accéder –

Questions connexes