Καλησπέρα σε όλους, είχα καιρό να συναντήσω "προβλήματάκια", σαν τα χιόνιαααα.
Είπα να ξεκινήσω να δουλεύω κι εγώ σιγά σιγά το Entity Framework 4, και να φύγω από LINQ to SQL.
Ξεκίνησα ένα project το όποιο θέλω να χρησιμοποιεί embedded database, κι έτσι κατέφυγα στην SqlCe λύση.
Το πρώτο limitation που αντιμετώπισα είναι ότι δεν μπορώ να έχω Auto IDENTITY column και Entity Framework γιατί δεν υποστηρίζεται
batch operations απο την SqlCe. Αυτό τώρα αντιμετωπίζεται είτε με uniqueidentifier datatype και βγάζοντας δικά σου Guid.NewGuid() σε κάθε
Entity Initialization και μετά δίνοντας αυτό το Guid σε κάθε child record, και ούτω καθεξης για κάθε Entity Relationship (κουραστικό αλλά είναι μία λύση).
Η μπορείς να βγάζεις το επόμενο int Id βλέποντας το τελευταίο που έχεις στην βάση και να το δίνεις +1 στο Entity,
(δεν δουλεύει με τα child records καθόλου όμορφα, και δεν μπορείς να κάνεις SaveChanges() και να πάρεις το επόμενο Id από την βάση, αλλάζει το enumeration λόγω refresh των Entities κτλ.)
Μπορείς βέβαια να πάρεις το τελευταίο της βάσης και να αθροίζεις +1 σε κάθε record. φουυυ κουραστήκατε ήδη, damn SqlCe :P.
Επισημάνω πως η βάση πρέπει να είναι embedded κυρίως για την αποφυγή SQL Server setup, για τον λόγο όσο το δυνατόν λιγότερα resources εκεί που θα τρέχει η εφαρμογή. (Γενικά portable application).
Ακόμα ένα θέμα είναι ότι θέλω να δουλεύω με Detached Entities. Από ότι είδα όταν κάνεις Dispose το ObjectContext τα Entities δεν γίνονται Detached (όπως LINQ to SQL).
Ένας τρόπος είναι να χρησιμοποιήσεις την μέθοδο Detach(), αλλά δεν κατάφερα να πάρω ολόκληρο το Object Graph, τα child records χάνονται!
Ακόμη δοκίμασα με MergeOptions = NoTracking, μετά τραβάω με LINQ to Entities αυτά που θέλω βάζοντας .Include("ChildRelation") αλλά και πάλι παίρνω μόνο το Parent Entity.
Όποιος έχει να προσθέσει ή να υποδείξει οτιδήποτε θα χαρώ :).
Αν η προσέγγιση μου είναι λάθος παρακαλώ να με διορθώσετε.
Ευχαριστώ εκ των προτέρων.