Hoe laadt Entity Framework entiteiten in de database?
sobes.tech AI
Antwoord van AI
Entity Framework laadt entiteiten in de database door SQL-instructies te genereren voor het invoegen, bijwerken of verwijderen van gegevens op basis van de wijzigingen die worden gevolgd in de datacontext, en deze vervolgens uit te voeren.
Het proces omvat:
- Wijzigingen volgen: DbContext volgt de status van elke entiteit (Added, Modified, Deleted, Unchanged).
- Genereren van commando's: Op basis van de gevolgdde wijzigingen genereert Entity Framework de bijbehorende SQL-commando's (INSERT, UPDATE, DELETE).
- Uitvoeren van commando's: De gegenereerde commando's worden naar de database gestuurd en uitgevoerd.
Voorbeeld van het opslaan van een toegevoegde entiteit:
// Aanmaken van de datacontext
using (var context = new MyDbContext())
{
// Nieuwe entiteit aanmaken
var newUser = new User { Name = "Иван" };
// Entiteit toevoegen aan de context
context.Users.Add(newUser);
// Wijzigingen opslaan in de database
context.SaveChanges();
}
In dit voorbeeld start context.SaveChanges() het opslaanproces. EF genereert de SQL-query INSERT INTO Users (Name) VALUES ('Иван'); en voert deze uit in de database.
Bij het bijwerken van een entiteit:
using (var context = new MyDbContext())
{
// Entiteit ophalen
var userToUpdate = context.Users.Find(1);
// Eigenschap wijzigen
userToUpdate.Name = "Петр";
// Wijzigingen opslaan
context.SaveChanges();
}
Hier start SaveChanges() het genereren en uitvoeren van de SQL-query UPDATE Users SET Name = 'Петр' WHERE Id = 1;.
Bij het verwijderen van een entiteit:
using (var context = new MyDbContext())
{
// Entiteit ophalen
var userToDelete = context.Users.Find(2);
// Entiteit uit de context verwijderen
context.Users.Remove(userToDelete);
// Wijzigingen opslaan
context.SaveChanges();
}
SaveChanges() in dit geval genereert en voert de SQL-query DELETE FROM Users WHERE Id = 2; uit.
Entity Framework Core ondersteunt ook batch opslaan, waarbij meerdere INSERT-, UPDATE- en DELETE-operaties worden samengevoegd in één of meerdere pakketten voor efficiëntere verzending naar de database. Dit hangt af van de databaseprovider en de mogelijkheden ervan.