Καλημέρα,
Το Unit of Work έχει οριστεί στο P of EAA, σαν "το αντικείμενο που συντηρεί μια λίστα από αντικείμενα που επηρεάζονται από ένα business transaction, και συντονίζει την αποθήκευση των αλλαγών τους στην βάση αλλά και επιλύει τις πιθανές διενέξεις". Είναι καθαρό ότι το ObjectContext έχει αυτό το ρόλο στο Entity Framework.
Επίσης, το σύνολο των κλάσεων που παράγονται από το Entity Framework, δεν αποτελούν μια ιεραρχία αντικειμένων που απλά προέρχονται από την βάση δεδομένων (objects over tables hierachy), μιας που το μοντέλο του EF που παράγεται, αποτελεί την ένωση της ιεραρχίας των πινάκων της βάσης δεδομένων, της επιθυμητής ιεραρχίας των αντικειμένων που παράγονται και της συσχέτισης αυτών των δύο.
Προσωπικά, δεν βλέπω το λόγο για κάποιον να προσπαθήσει να υλοποιήσει τα Repository & Unit of Work με το EF, μιας και το ίδιο το framework έχει σχεδιαστεί να περιέχει αυτά τα patterns.
Από εκεί και πέρα επεκτάσεις και βελτιώσεις μπορείς να κάνεις παντού:
- Κάποια στιγμή θέλησα να γράφω τον ίδιο κώδικα είτε έγραφα επάνω σε EFv1 είτε σε EFv4 όταν έφτιαχνα web sites - όταν κυκλοφόρησε το EFv4. Έτσι κατέληξα σε αυτό που βλέπεις σε αυτή τη δημοσίευση.
- Στην συνέχεια κατάλαβα, ότι με αυτή την προσέγγιση δεν θα έλυνα το πρόβλημά μου - απλά θα το συντηρούσα - γράφοντας περισσότερο κώδικα. Οπότε παράτησα την προσέγγιση Database First και υιοθέτησα το Μodel First του EFv4.
- Τώρα ανυπομονώ να ολοκληρωθεί το Entity Framework Feature, Code First, μιας με αυτό τα αντικείμενα που παράγονται είναι πλήρως ελεγχόμενα.
Θα συνιστούσα, να δοκιμάσεις το EFv4, όπως είναι, να το ενσωματώσεις στην δουλειά σου, να δεις τι κάνει και τι δεν ταιριάζει στον τρόπο δουλειάς σου. Από εκεί και πέρα να ανησυχήσεις τι πρέπει να υλοποιήσεις με αυτό, και να αναζητήσεις κάτι περισσότερο...
George J.