Förstå EF Core

Slutförd

Entity Framework Core (EF Core) är en objektrelationell mappare (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 VANLIGA GAMLA CLR-objekt (Common Runtime Language) och starkt typifierad LINQ-syntax (Language Integrated Query ).

I EF Core abstraheras databasen 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 på att fokusera 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 starkt typifierad LINQ-syntax (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.
  • Checka in ä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 arkitekturen för EF Core:

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

DbContext är en särskild klass som representerar en arbetsenhet. DbContext innehåller metoder som du kan använda för att konfigurera alternativ, anslutningssträngar, 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, till exempel 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 tillhandahå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)

Om du vill välja mellan dessa alternativ avgör du om EF Core-modellen eller databasschemat är sanningskällan.

Migreringar

I verkliga projekt ändras datamodeller när appfunktioner implementeras. När nya entiteter läggs till och tas bort måste databasschemana ändras i enlighet med detta. Ef Core-migreringsfunktionen är ett sätt att stegvis uppdatera databasschemat så att det synkroniseras 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. C#-filerna kan ändras för anpassade beteenden eller för att hämta data. Filerna spåras i projektets källkontroll precis som 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 för en post över vilka migreringar som har tillämpats.

Omvänd teknik

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

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

Kontrollera dina kunskaper

1.

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