Ef Core begrijpen
Entity Framework Core (EF Core) is een object-relationele mapper (ORM). Een ORM biedt een laag tussen het domeinmodel dat u in code en een database implementeert. EF Core is een API voor gegevenstoegang waarmee u kunt communiceren met de database met behulp van .NET gewone, CLR-objecten (Common Runtime Language) en de sterk getypte LINQ-syntaxis (Language Integrated Query).
In EF Core wordt de database geabstraheerd achter .NET POCOs. EF Core verwerkt directe interactie met de onderliggende database. Wanneer u deze API gebruikt, kunt u minder tijd besteden aan het vertalen van aanvragen naar en van de database en het schrijven van SQL en meer tijd met betrekking tot belangrijke bedrijfslogica.
Met EF Core kunt u het volgende doen:
- Gegevens laden als C#-objecten (entiteiten).
- Gegevens toevoegen, wijzigen en verwijderen door methoden voor de entiteiten aan te roepen.
- Wijs meerdere databasetabellen toe aan één C#-entiteit.
- Gelijktijdigheidsproblemen afhandelen die optreden wanneer meerdere gebruikers tegelijkertijd proberen dezelfde record bij te werken.
- Gebruik de LINQ-syntaxis (System.Linq) om een query uit te voeren op de database.
- Toegang tot meerdere databases, waaronder SQL Server, SQLite, Azure Cosmos DB, PostgreSQL, MySQL en meer.
- Bouw uw domeinmodel op basis van een bestaande database.
- Beheer uw databaseschema op basis van uw domeinmodel.
- Wijzigingen doorvoeren in complexe, diepe of brede objectgrafieken van gerelateerde entiteiten met behulp van één methode-aanroep.
EF Core-architectuur controleren
In het volgende diagram ziet u de architectuur van EF Core:
DbContext is een speciale klasse die een werkeenheid vertegenwoordigt. DbContext
biedt methoden die u kunt gebruiken voor het configureren van opties, verbindingsreeks s, logboekregistratie en het model dat wordt gebruikt om uw domein toe te wijzen aan de database.
Klassen die zijn afgeleid van DbContext
:
- Vertegenwoordigen een actieve sessie met de database.
- Zorgen voor het opslaan en doorzoeken van exemplaren van entiteiten.
- Eigenschappen van het type
DbSet<T>
opnemen die tabellen in de database vertegenwoordigen.
Met de EF Core-provider worden wijzigingen in de objectgrafiek vertaald naar SQL.
De databaseprovider:
- Is een invoegtoepassing die is ontworpen voor een specifieke database-engine, zoals SQL Server, Azure Cosmos DB of PostgreSQL.
- Vertaalt methode-aanroepen en LINQ-query's naar het systeemeigen SQL-dialect van de database.
- Is een uitbreiding van EF Core om functies in te schakelen die uniek zijn voor de database-engine.
Databaseschema's beheren
EF Core biedt twee primaire manieren om uw EF Core-model en databaseschema synchroon te houden:
- Migraties (model als bron van waarheid)
- Reverse engineering (database als bron van waarheid)
Als u wilt kiezen tussen deze opties, moet u beslissen of uw EF Core-model of het databaseschema de bron van waarheid is.
Migraties
In echte projecten veranderen gegevensmodellen naarmate app-functies worden geïmplementeerd. Wanneer er nieuwe entiteiten worden toegevoegd en verwijderd, moeten de databaseschema's dienovereenkomstig worden gewijzigd. De functie EF Core-migraties biedt een manier om het databaseschema stapsgewijs bij te werken om het gesynchroniseerd te houden met het gegevensmodel van de toepassing, terwijl bestaande gegevens in de database behouden blijven.
Wanneer een gegevensmodelwijziging wordt geïntroduceerd, gebruikt de ontwikkelaar EF Core-hulpprogramma's om een bijbehorende migratie toe te voegen. EF Core vergelijkt het huidige model met een momentopname van het vorige model om de verschillen te bepalen. C#-code voor het implementeren van de wijzigingen wordt gegenereerd. U kunt de C#-bestanden wijzigen voor aangepast gedrag of om gegevens te seeden. De bestanden worden bijgehouden in het broncodebeheer van uw project, net als elk ander bronbestand.
Nadat een nieuwe migratie is gegenereerd, kan deze op verschillende manieren worden toegepast op een database. EF Core registreert alle toegepaste migraties in een speciale geschiedenistabel. In de geschiedenistabel wordt bijgehouden welke migraties zijn toegepast.
Reverse-engineering
Reverse engineering is het proces van het bouwen van entiteitsmodelklassen en een DbContext
klasse op basis van een databaseschema. Deze benadering wordt vaak gebruikt met bestaande of gedeelde databases die een databasebeheerder beheert.
In de volgende les gaat u aan de slag met EF Core met behulp van een migratie.