Sobes.tech
Junior — Middle

Πώς υλοποιεί το Entity Framework την απεικόνιση των κληρονομούμενων κλάσεων C# στη δομή των πινάκων της βάσης δεδομένων;

sobes.tech AI

Απάντηση από AI

Το Entity Framework υποστηρίζει διάφορες στρατηγικές χαρτογράφησης της κληρονομικότητας των κλάσεων C# σε πίνακες βάσης δεδομένων:

  1. Table Per Hierarchy (TPH) — όλες οι κλάσεις και οι ιδιότητές τους αποθηκεύονται σε έναν πίνακα με μια επιπλέον στήλη διαχωριστή που δείχνει τον τύπο του αντικειμένου.

  2. Table Per Type (TPT) — για κάθε κλάση δημιουργείται ένας ξεχωριστός πίνακας, όπου οι πίνακες των κληρονόμων περιέχουν μόνο πρόσθετα πεδία, και η σχέση με την βασική κλάση γίνεται μέσω εξωτερικού κλειδιού.

  3. 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

Η επιλογή στρατηγικής εξαρτάται από τις απαιτήσεις απόδοσης και τη δομή των δεδομένων.