Wat is Entity Framework Core?

Voltooid

De meeste niet-triviale webtoepassingen moeten op betrouwbare wijze bewerkingen uitvoeren op gegevens, zoals maken, lezen, bijwerken en verwijderen (CRUD). Ze moeten ook wijzigingen die door deze bewerkingen zijn aangebracht, behouden tussen het opnieuw opstarten van de toepassing. Hoewel er verschillende opties zijn voor het behouden van gegevens in .NET-toepassingen, is Entity Framework (EF) Core een gebruiksvriendelijke oplossing en geschikt voor veel .NET-toepassingen.

Ef Core begrijpen

EF Core is een lichtgewicht, uitbreidbare, opensource- en platformoverschrijdende technologie voor gegevenstoegang voor .NET-toepassingen.

EF Core kan fungeren als een object-relationele mapper, die:

  • Hiermee kunnen .NET-ontwikkelaars met een database werken met behulp van .NET-objecten.
  • Elimineert de noodzaak van de meeste code voor gegevenstoegang die doorgaans moet worden geschreven.

EF Core ondersteunt een groot aantal populaire databases, waaronder SQLite, MySQL, PostgreSQL, Oracle en Microsoft SQL Server.

Het model

Met EF Core wordt gegevenstoegang uitgevoerd met behulp van een model. Een model bestaat uit entiteitsklassen en een contextobject dat een sessie met de database vertegenwoordigt. Met het contextobject kunt u gegevens opvragen en opslaan.

De entiteitsklasse

In dit scenario implementeert u een API voor pizzastorebeheer, dus u gebruikt een Pizza entiteitsklasse. De pizza's in uw winkel hebben een naam en een beschrijving. Ze hebben ook een id nodig om de API en database toe te staan ze te identificeren. De Pizza entiteitsklasse die u in uw toepassing gebruikt, identificeert pizza's:

namespace PizzaStore.Models 
{
  public class Pizza
  {
      public int Id { get; set; }
      public string? Name { get; set; }
      public string? Description { get; set; }
  }
}

De contextklasse

Deze toepassing heeft slechts één entiteitsklasse, maar de meeste toepassingen hebben meerdere entiteitsklassen. De contextklasse is verantwoordelijk voor het opvragen en opslaan van gegevens in uw entiteitsklassen en voor het maken en beheren van de databaseverbinding.

CRUD-bewerkingen uitvoeren met EF Core

Nadat EF Core is geconfigureerd, kunt u deze gebruiken om CRUD-bewerkingen uit te voeren op uw entiteitsklassen. Vervolgens kunt u zich ontwikkelen op basis van C#-klassen en de databasebewerkingen delegeren aan de contextklasse. Databaseproviders vertalen deze op hun beurt naar een databasespecifieke querytaal. Een voorbeeld is SQL voor een relationele database. Query's worden altijd uitgevoerd op basis van de database, zelfs als de entiteiten die in het resultaat worden geretourneerd, al in de context bestaan.

Querygegevens

Het contextobject toont een verzamelingsklasse voor elk entiteitstype. In het voorgaande voorbeeld toont de contextklasse een verzameling Pizza objecten als Pizzas. Aangezien we een exemplaar van de contextklasse hebben, kunt u een query uitvoeren op de database voor alle pizza's:

var pizzas = await db.Pizzas.ToListAsync();

Gegevens invoegen

U kunt hetzelfde contextobject gebruiken om een nieuwe pizza in te voegen:

await db.pizzas.AddAsync(
    new Pizza { ID = 1, Name = "Pepperoni", Description = "The classic pepperoni pizza" });

Gegevens verwijderen

Verwijderbewerkingen zijn eenvoudig. Ze vereisen alleen een id van het item dat moet worden verwijderd:

var pizza = await db.pizzas.FindAsync(id);
if (pizza is null)
{
    //Handle error
}
db.pizzas.Remove(pizza);

Gegevens bijwerken

Op dezelfde manier kunt u een bestaande pizza bijwerken:

int id = 1;
var updatepizza = new Pizza { Name = "Pineapple", Description = "Ummmm?" })
var pizza = await db.pizzas.FindAsync(id);
if (pizza is null)
{
    //Handle error
}
pizza.Item = updatepizza.Item;
pizza.IsComplete = updatepizza.IsComplete;
await db.SaveChangesAsync();

De EF Core-database in het geheugen gebruiken

EF Core bevat een in-memory databaseprovider die kan worden gebruikt om uw toepassing te testen. De in-memory databaseprovider is handig voor testen en ontwikkelen, maar moet niet worden gebruikt in productie. In de volgende les gebruikt u de in-memory databaseprovider om een database te maken en CRUD-bewerkingen erop uit te voeren.