Sobes.tech
Middle

Πώς φορτώνει το Entity Framework τις οντότητες στη βάση δεδομένων;

sobes.tech AI

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

Το Entity Framework φορτώνει οντότητες στη βάση δεδομένων δημιουργώντας ερωτήματα SQL για εισαγωγή, ενημέρωση ή διαγραφή δεδομένων βάσει των αλλαγών που παρακολουθούνται στο πλαίσιο δεδομένων, και στη συνέχεια τα εκτελεί.

Η διαδικασία περιλαμβάνει:

  1. Παρακολούθηση αλλαγών: Το DbContext παρακολουθεί την κατάσταση κάθε οντότητας (Added, Modified, Deleted, Unchanged).
  2. Γενεραция εντολών: Βάσει των παρακολουθούμενων αλλαγών, το Entity Framework δημιουργεί τις αντίστοιχες εντολές SQL (INSERT, UPDATE, DELETE).
  3. Εκτέλεση εντολών: Οι δημιουργημένες εντολές αποστέλλονται στη βάση δεδομένων και εκτελούνται.

Παράδειγμα αποθήκευσης μιας προστιθέμενης οντότητας:

// Δημιουργία του πλαισίου δεδομένων
using (var context = new MyDbContext())
{
    // Δημιουργία νέας οντότητας
    var newUser = new User { Name = "Иван" };

    // Προσθήκη της οντότητας στο πλαίσιο
    context.Users.Add(newUser);

    // Αποθήκευση των αλλαγών στη βάση
    context.SaveChanges();
}

Σε αυτό το παράδειγμα, το context.SaveChanges() ξεκινά τη διαδικασία αποθήκευσης. Το EF δημιουργεί το ερώτημα SQL τύπου INSERT INTO Users (Name) VALUES ('Иван'); και το εκτελεί στη βάση δεδομένων.

Κατά την ενημέρωση μιας οντότητας:

using (var context = new MyDbContext())
{
    // Ανάκτηση της οντότητας
    var userToUpdate = context.Users.Find(1);

    // Αλλαγή ιδιότητας
    userToUpdate.Name = "Петр";

    // Αποθήκευση αλλαγών
    context.SaveChanges();
}

Εδώ, το SaveChanges() ξεκινά τη δημιουργία και εκτέλεση του ερωτήματος SQL UPDATE Users SET Name = 'Петр' WHERE Id = 1;.

Κατά τη διαγραφή μιας οντότητας:

using (var context = new MyDbContext())
{
    // Ανάκτηση της οντότητας
    var userToDelete = context.Users.Find(2);

    // Αφαίρεση της οντότητας από το πλαίσιο
    context.Users.Remove(userToDelete);

    // Αποθήκευση των αλλαγών
    context.SaveChanges();
}

Το SaveChanges() σε αυτή την περίπτωση θα δημιουργήσει και θα εκτελέσει το ερώτημα SQL DELETE FROM Users WHERE Id = 2;.

Το Entity Framework Core υποστηρίζει επίσης την αποθήκευση σε παρτίδες (batch saving), όπου πολλές λειτουργίες INSERT, UPDATE, DELETE συνδυάζονται σε ένα ή περισσότερα πακέτα για πιο αποδοτική αποστολή στη βάση δεδομένων. Αυτό εξαρτάται από τον πάροχο της βάσης δεδομένων και τις δυνατότητές του.