2010-02-02 1 views
0

J'ai un jeu de données qui a modifié, inséré et supprimé des lignes. J'envoie le dataset.GetChanges à mon MiddleTier qui à son tour l'envoie à un serveur qui met à jour la base de données. J'utilise GetChanges donc j'envoie le plus de lignes possible.Obtention d'un jeu de données stable après la mise à jour

Le serveur met à jour, insère et supprime les lignes correctement et renvoie l'ensemble de données mis à jour que je fusionne ensuite avec mon jeu de données local. Le problème est que je reçois des lignes ajoutées/modifiées en double lorsque les clés primaires ne correspondent pas. Donc je suppose que je veux appeler RejectChanges après la fusion, ce qui supprimerait tous les changements laissés (ce serait des doublons). Le problème est alors que toutes les lignes supprimées sont toujours laissées dans l'ensemble de données. La fusion ne supprime pas les lignes supprimées, j'ai besoin d'appeler AcceptChanges pour le faire. J'ai donc besoin de faire à la fois Accept et RejectChanges mais ce n'est pas possible.

Existe-t-il un bon moyen de le faire? Des suggestions sur la façon de résoudre cela de la meilleure façon possible?

Merci!

Répondre

1

Si vous effectuez AcceptChanges sur l'ensemble de données avant d'envoyer des modifications à l'ensemble de données de niveau intermédiaire, vous devez prendre soin de lui-même (c'est-à-dire mettre à jour, supprimer, ajouter). De cette façon, vous n'avez pas besoin de fusionner les modifications car votre dataset est déjà mis à jour.

Vous devrez peut-être également prendre en compte ce qui devrait se produire si et quand ces modifications du serveur échouent.

Découvrez MSDN article DataSet:AcceptChanges Method

+0

Le problème est que si je fais AcceptChanges sans fusion, je ne reçois pas les données mises à jour dans mon jeu de données locales (clés et des choses qui est attribué dans la base de données). –

Questions connexes