
Είμαι χρησιμοποιώντας το νέο ADO.NET Entity Data Model σε μια απλή βάση δεδομένων. Έχω ένα πίνακα / οντότητα με ένα πρωτεύον κλειδί (pageid) και ένα ξένο κλειδί ParentID ότι οι αναφορές πίσω στον εαυτό του για pageid για ένα γονέα / παιδιού «0..1 σε πολλά» της σχέσης. Σε μια σελίδα ASP.Net, είμαι με τη χρήση ενός FormView με asp: DynamicControl για να εκφράσουν αυτό ως μάρτυρας. Το τμήμα λειτουργεί μια χαρά, εκτός από μία μικρή λεπτομέρεια: Όταν η σελίδα καθιστά, ο κατάλογος των πιθανών γονέων ίδια περιλαμβάνει και τη ρύθμιση ένα στοιχείο για να έχει ο γονέας του ίδιου προκαλεί σφάλματα και αποθηκεύει στη βάση δεδομένων. Προφανώς, μια ιεραρχική αντικείμενο δεν θα έπρεπε να έχουν ένα γονέα του ίδιου, έτσι πώς μπορώ να περιορίζουν αυτή τη συμπεριφορά;


Σε ό, τι βλέπω, οι επιλογές μου είναι:


* Κάπως αλλάξετε την ForeignKey `_`edit.ascx στα DynamicData FieldTemplates. Αυτό είναι προβληματικό γιατί δεν μπορώ να δω πώς να πάρετε μια αναφορά στην τρέχουσα οντότητας *πρωτεύον* κλειδί για να το αφαιρέσετε από τους πιθανούς *ξένους* βασικές επιλογές. Πλέον, αυτό ενδεχομένως θα μάνικα οποιαδήποτε μη-ιεραρχική διαιτητές fKey χρήσεις όπου τα κλειδιά τυχαίνει να συγκρούονται.
* Κάνετε κάποια prerender jiggery-pokery στη σελίδα για να προσπαθήσετε να αφαιρέσετε το listitem από την κατέστησε DropDownList. Αυτό δεν φαίνεται σαν ο σωστός τρόπος, δεδομένου ότι καθορίζει μόνο για την εν λόγω σελίδα. EDIT: Αυτό είναι το πώς είμαι το επίλυσης σήμερα.
* Κάποιο είδος του ενθέματος / ενημέρωση σκανδάλη για να αναγκάσει το ParentID να null αν η ίδια ταιριάζει. Αυτό δεν είναι καλό, διότι δεν σιωπηλά από την πλευρά του χρήστη.


Έχει κανείς έχεις εκεί έξω έναν καλύτερο τρόπο; Επίσης, επιτρέψτε μου να ξέρω αν θα πρέπει να παρέχει οποιαδήποτε περισσότερες λεπτομέρειες.


-Kelly

 
ADO.NET Entity Data Model Επιτρέπει την εγκύκλιο Εξωτερικών Βασικά Refs
=======================================================================



Κατέληξα να κινείται στην ιεραρχία σε ένα τραπέζι συναρμολόγησης γιατί έπρεπε να αποθηκεύσει περισσότερο από γονέα / παιδιού σχέσεις. Κάνοντας έτσι, επίσης σήμαινε ότι θα μπορούσε χωματερή τον έλεγχο DynamicData και να χρησιμοποιήσετε ένα πιο χρήστη διαισθητική TreeView με την πλευρά του διακομιστή εκδηλώσεις drag-n-drop (ComponentArt). Λόγω της φύσης του ελέγχου, κανένα στοιχείο θα μπορούσε να είναι το δικό του γονέα, ώστε το πρόβλημα ήταν αμφισβητήσιμο. Πω πω, 7 μήνες είναι μεγάλο χρονικό διάστημα στην πρώτη μου εμπειρία με Οντότητα πλαίσιο :)

 