Wie lädt Entity Framework Entitäten in die Datenbank?
sobes.tech KI
Antwort von AI
Entity Framework lädt Entitäten in die Datenbank, indem es SQL-Insert-, Update- oder Delete-Anfragen basierend auf den im Datenkontext nachverfolgten Änderungen erstellt und diese anschließend ausführt.
Der Prozess umfasst:
- Änderungsverfolgung: DbContext verfolgt den Zustand jeder Entität (Added, Modified, Deleted, Unchanged).
- Befehlsgenerierung: Basierend auf den nachverfolgten Änderungen generiert Entity Framework die entsprechenden SQL-Befehle (INSERT, UPDATE, DELETE).
- Befehlsausführung: Die generierten Befehle werden an die Datenbank gesendet und ausgeführt.
Beispiel zum Speichern einer hinzugefügten Entität:
// Erstellen des Datenkontexts
using (var context = new MyDbContext())
{
// Neue Entität erstellen
var newUser = new User { Name = "Иван" };
// Entität zum Kontext hinzufügen
context.Users.Add(newUser);
// Änderungen in der Datenbank speichern
context.SaveChanges();
}
In diesem Beispiel initiiert context.SaveChanges() den Ladevorgang. EF generiert die SQL-Anweisung INSERT INTO Users (Name) VALUES ('Иван'); und führt sie in der Datenbank aus.
Beim Aktualisieren einer Entität:
using (var context = new MyDbContext())
{
// Entität abrufen
var userToUpdate = context.Users.Find(1);
// Eigenschaft ändern
userToUpdate.Name = "Петр";
// Änderungen speichern
context.SaveChanges();
}
Hier initiiert SaveChanges() die Generierung und Ausführung der SQL-Anweisung UPDATE Users SET Name = 'Петр' WHERE Id = 1;.
Beim Löschen einer Entität:
using (var context = new MyDbContext())
{
// Entität abrufen
var userToDelete = context.Users.Find(2);
// Entität aus dem Kontext entfernen
context.Users.Remove(userToDelete);
// Änderungen speichern
context.SaveChanges();
}
SaveChanges() in diesem Fall generiert und führt die SQL-Anweisung DELETE FROM Users WHERE Id = 2; aus.
Entity Framework Core unterstützt auch die Batch-Speicherung, bei der mehrere INSERT-, UPDATE- und DELETE-Operationen in einem oder mehreren Paketen zusammengefasst werden, um eine effizientere Übertragung an die Datenbank zu ermöglichen. Dies hängt vom Datenbankanbieter und dessen Fähigkeiten ab.