Πώς υλοποιεί το Entity Framework την απεικόνιση των κληρονομούμενων κλάσεων C# στη δομή των πινάκων της βάσης δεδομένων;
sobes.tech AI
Απάντηση από AI
Το Entity Framework υποστηρίζει διάφορες στρατηγικές χαρτογράφησης της κληρονομικότητας των κλάσεων C# σε πίνακες βάσης δεδομένων:
-
Table Per Hierarchy (TPH) — όλες οι κλάσεις και οι ιδιότητές τους αποθηκεύονται σε έναν πίνακα με μια επιπλέον στήλη διαχωριστή που δείχνει τον τύπο του αντικειμένου.
-
Table Per Type (TPT) — για κάθε κλάση δημιουργείται ένας ξεχωριστός πίνακας, όπου οι πίνακες των κληρονόμων περιέχουν μόνο πρόσθετα πεδία, και η σχέση με την βασική κλάση γίνεται μέσω εξωτερικού κλειδιού.
-
Table Per Concrete Class (TPC) — για κάθε συγκεκριμένη κλάση δημιουργείται ένας ξεχωριστός πίνακας που περιέχει όλα τα πεδία, συμπεριλαμβανομένων αυτών που κληρονομήθηκαν.
Παράδειγμα TPH:
public abstract class Animal { public int Id { get; set; } } public class Cat : Animal { public int Lives { get; set; } } public class Dog : Animal { public string Breed { get; set; } }
// Στη βάση δεδομένων θα υπάρχει ένας πίνακας με όνομα Animals με στήλες Id, Name, Lives, Breed και Discriminator
Η επιλογή στρατηγικής εξαρτάται από τις απαιτήσεις απόδοσης και τη δομή των δεδομένων.