Πώς φορτώνει το Entity Framework τις οντότητες στη βάση δεδομένων;
sobes.tech AI
Απάντηση από AI
Το Entity Framework φορτώνει οντότητες στη βάση δεδομένων δημιουργώντας ερωτήματα SQL για εισαγωγή, ενημέρωση ή διαγραφή δεδομένων βάσει των αλλαγών που παρακολουθούνται στο πλαίσιο δεδομένων, και στη συνέχεια τα εκτελεί.
Η διαδικασία περιλαμβάνει:
- Παρακολούθηση αλλαγών: Το DbContext παρακολουθεί την κατάσταση κάθε οντότητας (Added, Modified, Deleted, Unchanged).
- Γενεραция εντολών: Βάσει των παρακολουθούμενων αλλαγών, το Entity Framework δημιουργεί τις αντίστοιχες εντολές SQL (INSERT, UPDATE, DELETE).
- Εκτέλεση εντολών: Οι δημιουργημένες εντολές αποστέλλονται στη βάση δεδομένων και εκτελούνται.
Παράδειγμα αποθήκευσης μιας προστιθέμενης οντότητας:
// Δημιουργία του πλαισίου δεδομένων
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 συνδυάζονται σε ένα ή περισσότερα πακέτα για πιο αποδοτική αποστολή στη βάση δεδομένων. Αυτό εξαρτάται από τον πάροχο της βάσης δεδομένων και τις δυνατότητές του.