KelMan:
Μα έτσι κι αλλιώς, όταν δείχνεις πράγματα στo DataGridView, με binding δουλεύεις - implicitly!
Δουλεύω με BindingSource σχεδόν ευλαβικά. Από τότε, όμως, που ασχολούμαι με Linq2Sql και Entity Framework διαπιστώνω όλο και πιο πολύ ότι στα παραδείγματα το binding γίνεται πάνω στο datasource property του control. Η αλήθεια είναι ότι αυτό με παραξένεψε αρχικά και είπα να το ψάξω. Τελικά βρήκα ότι δεν έχει νόημα να χρησιμοποιήσει κανείς bindingsource control όταν τα objects δεν κάνουν implement το IEditableObject Interface. Χωρίς αυτό, πάνε περίπτατο τα BeginEdit(), EndEdit(), CancelEdit() και οι αλλαγές περνάνε αμέσως από το editing control (π.χ. το datagridview) στο object. Με άλλα λόγια, η BindingSource.EndEdit() που καλούμε συνήθως πριν αποθηκεύσουμε τις αλλαγές, είναι άχρηστη όσον αφορά στο EF. Επίσης, παίζοντας με το binding, διαπίστωσα ότι υπήρχαν περιπτώσεις που τα περιεχόμενα του context και της bindinglist δε συγχρονίζονταν. Η αλήθεια είναι ότι μεταχειρίστηκα το context σαν dataset (parent - child - grandchild και πάει λέγοντας). Μια ερμηνεία και κάποια hints όσον αφορά στο binding με EF βρήκα εδώ. Μάλλον με τη νέα έκδοση του VS πρέπει να περιμένουμε και αλλαγές/βελτιώσεις στην τεχνολογία του binding. Πάντως, προσωπικά αναθεωρώ την άποψή μου περί binding. Δε βολεύει να έχεις ένα context ανοιχτό και να του συμπεριφέρεσαι σα να είναι dataset. Προτιμώ να δημιουργώ το οποιοδήποτε object όταν το χρειάζομαι, να ενημερώνω τις μεταβολές στα properties explicitly και να αποθηκεύω ξανά. Νομίζω ότι αυτά που γράφω συμφωνούν με το πνεύμα του thread. Αν κάποιος έχει να κάνει κάποια παρατήρηση διαφορετική πάνω στην τοποθέτησή μου θα χαρώ να τη διαβάσω, γιατί κι εγώ ακόμα ψάχνομαι.
Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!