Förstå EF Core

Slutförd

Entity Framework Core (EF Core) är en objektrelationsmappare (ORM). En ORM tillhandahåller ett lager mellan den domänmodell som du implementerar i kod och en databas. EF Core är ett API för dataåtkomst som gör att du kan interagera med databasen med hjälp av .NET:s vanliga gamla CLR-objekt (Common Runtime Language) och linq-syntaxen (Language Integrated Query).

I EF Core är databasen abstrakt bakom .NET POCOs. EF Core hanterar direkt interaktion med den underliggande databasen. När du använder det här API:et kan du ägna mindre tid åt att översätta begäranden till och från databasen och skriva SQL och mer tid med fokus på viktig affärslogik.

Med EF Core kan du:

  • Läs in data som C#-objekt (entiteter).
  • Lägg till, ändra och ta bort data genom att anropa metoder på entiteterna.
  • Mappa flera databastabeller till en enda C#-entitet.
  • Hantera samtidighetsproblem som uppstår när flera användare samtidigt försöker uppdatera samma post.
  • Använd LINQ-syntaxen (System.Linq) för att fråga databasen.
  • Få åtkomst till flera databaser, inklusive SQL Server, SQLite, Azure Cosmos DB, PostgreSQL, MySQL med mera.
  • Skapa din domänmodell från en befintlig databas.
  • Hantera databasschemat baserat på din domänmodell.
  • Genomför ändringar i komplexa, djupa eller breda objektdiagram över relaterade entiteter med hjälp av ett enda metodanrop.

Granska EF Core-arkitekturen

Följande diagram visar EF Cores arkitektur:

Diagram som visar komponenter och processer i Entity Framework Core-arkitekturen.

DbContext är en särskild klass som representerar en arbetsenhet. DbContextinnehåller metoder som du kan använda för att konfigurera alternativ, anslutningssträng, loggning och den modell som används för att mappa din domän till databasen.

Klasser som härleds från DbContext:

  • Representera en aktiv session med databasen.
  • Spara och kör frågor mot instanser av entiteter.
  • Inkludera egenskaper av typen DbSet<T> som representerar tabeller i databasen.

EF Core-providern översätter ändringar i objektdiagrammet till SQL.

Databasprovidern:

  • Är ett plugin-bibliotek som är utformat för en specifik databasmotor som SQL Server, Azure Cosmos DB eller PostgreSQL.
  • Översätter metodanrop och LINQ-frågor till databasens interna SQL-dialekt.
  • Utökar EF Core så att funktioner som är unika för databasmotorn blir tillgängliga.

Hantera databasscheman

EF Core innehåller två huvudsakliga sätt att hålla EF Core-modellen och databasschemat synkroniserade:

  • Migreringar (modell som sanningskälla)
  • Omvänd teknik (databas som sanningskälla)

Välj mellan de här alternativen genom att bestämma om EF Core-modellen eller databasschemat är källan till sanningen.

Migreringar

I verkliga projekt ändras datamodeller när appfunktioner implementeras. När nya entiteter läggs till och tas bort måste databasscheman ändras i enlighet med detta. Funktionen EF Core-migrering ger ett sätt att stegvis uppdatera databasschemat så att det är synkroniserat med programmets datamodell samtidigt som befintliga data bevaras i databasen.

När en datamodelländring introduceras använder utvecklaren EF Core-verktyg för att lägga till en motsvarande migrering. EF Core jämför den aktuella modellen med en ögonblicksbild av den tidigare modellen för att fastställa skillnaderna. C#-kod för att implementera ändringarna genereras. Du kan ändra C#-filerna för anpassade beteenden eller för att hämta data. Filerna spåras i projektets källkontroll som alla andra källfiler.

När en ny migrering har genererats kan den tillämpas på en databas på olika sätt. EF Core registrerar alla tillämpade migreringar i en särskild historiktabell. Historiktabellen behåller en post som migreringar tillämpades för.

Bakåtkompilering

Omvänd teknik är processen för att skapa entitetsmodellklasser och en DbContext klass baserat på ett databasschema. Den här metoden används ofta med befintliga eller delade databaser som en databasadministratör hanterar.

I nästa lektion kommer du igång med EF Core med hjälp av en migrering.

Kontrollera dina kunskaper

1.

Vilken klass innehåller en grundläggande uppsättning åtgärder som du kan använda för att konfigurera och interagera med databasen?