Αν έχω καταλάβει καλά πρόκειται για ένα module το οποίο δε θα τρέξει μιά φορά και τέλος αλλά μιλάμε για μία ongoing διαδικασία που θα τρέχει σε τακτά χρονικά διαστήματα.
Αν θεωρήσουμε λοιπόν ότι και τα δύο dataset περιέχουν αρκετούς πίνακες τα πράγματα περιπλέκονται λιγάκι, οπότε και χρειάζεσαι "στρατηγική".
Πρώτον καλό θα είναι να έχεις φροντίσει στο κάθε dataset νσ έχεις relations οπότε και να προστατευθείς από ξεκρέμαστα δεδομένα. Έπίσης πρέπει να σκεφθείς τι γίνεται με τις διαγραφές και με τις τροποποιήσεις δεδομένων.
Ας θεωρήσουμε ότι το Dataset A είναι η πηγή και το Β ο στόχος
// Δημιουργία του Dataset A instanse
// Γέμισμα του Dataset A με δεδομένα με την χρήση Dataadapters από την βάση πηγή
// Δημιουργία του Dataset Β instanse
// Γέμισμα του Dataset B με δεδομένα με την χρήση Dataadapters από την βάση στόχο
// Merge (συγνώμη για το αγγλικό δε μου έβγαινε καλύτερο) τα δεδομένα των δύο dataset στο 2ο
// το Merge είναι ολόκληρη ιστορία και εξαρταάται αν το κάθε datatable στο A έχει ίδιο
// structure με το αντίστοιχο datatable στο dataset B
// Οπότε εδώ πρέπει να αποφασίσεις κάθε φορά αν θα χρησιμοποιήσεις το merge στο datatable
// (δουλεύει στο NET 2.0 only for datatables) ή πας για μεγάλες λούπες με συγκρίσεις κλειδιών
// οπότε βοήθεια σου
// Το καλό είναι βέβαια ότι μετά από αυτή τη διαδικασία έχεις ότι πιο αξιόπιστο γίνεται για το
// συγκεκριμμένο τρόπο migration και έχεις τα new, modified, deleted rows
// Ακολουθεί το UPDATE του κάθε datatable στο dataset B και τελείωσες.
Επίσης θα πρέπει να αποφασίσεις αν όλα τα παραπάνω θα τρέξουν σε transaction ώστε να είσαι σίγουρος αν μπήκαν όλες οι εγγραφές.
Οι αποφάσεις είναι δικές σου ανάλογα με τις απαιτήσεις που έχεις οι οποίες δεν ήταν και τόσο ξεκάθαρες
Βαγγέλης Ξανθάκης
Independent Consultant
www.aylos.com