Confronto DataTable

lunedì 11 maggio 2015 - 11.44
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010  |  SQL Server 2008 R2

mmjc23 Profilo | Newbie

Buongiorno a tutti...
Sto uscendo pazzo...sembra una cosa semplice e invece non riesco ad uscirne fuori.

Ho un Datatable DT1 che contiene il contenuto di una tabella con due colonne; supponiamo ID e Descrizione dove ID è la chiave primaria.
Siccome le modifiche alla tabella SQL possono essere effettuate anche da altre fonti, vorrei, supponiamo ciclicamente, andare a ricaricarmi i dati contenuti nella tabella in un DT2 con la stessa struttura e la stessa chiave primaria.

Quello che vorrei ottenere, è un nuovo DataTable DT1 aggiornato dal quale, richiamando il metodo "GetChanges", ottengo solamente i record che sono stati Aggiunti, Modificati ed Eliminati.
Siccome i due DataTable sono "statici" (ovvero non vengono modificati all'interno del codice, ma le tabelle SQL vengono modificate esternamente al programma), i metodi "GetChanges" restituiscono, ovviamente, un DataTable "Nothing".
Il Merge della seconda tabella nella prima, invece, sembra funzionare (a mio avviso) molto male...ovvero...

Se al parametro "PreserveChanges" del metodo "Merge" assegno il valore "True":
-tutte le righe presenti sia in DT1 che in DT2, me le segna come "Modified" (anche se non sono state modificate) e con i valori originali di DT1
-tutte le righe eliminate (non presenti in DT2), rimangono in DT1 segnate come "Unchanged"
-tutte le righe aggiunte (presenti solo in DT2), vengono aggiunte a DT1 e segnate come "Unchanged"

Se al parametro "PreserveChanges" del metodo "Merge" assegno il valore "False":
-tutte le righe presenti sia in DT1 che in DT2, me le segna come "Unchanged" (con i valori aggiornati se sono state modificate)
-tutte le righe eliminate (non presenti in DT2), rimangono in DT1 segnate come "Unchanged"
-tutte le righe aggiunte (presenti solo in DT2), vengono aggiunte a DT1 e segnate come "Unchanged"

Grazie anticipatamente a chi vorrà aiutarmi ad uscire da questo groviglio...vorrei evitare di effettuare 10000 cicli "for" sui DataTable, ma temo non ci sia via d'uscita.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5