Qu’est-ce qu’Entity Framework Core ?
La plupart des applications web non triviales doivent exécuter en toute fiabilité des opérations sur les données, comme la création, la lecture, la mise à jour et la suppression (CRUD). Elles doivent également conserver toutes les modifications apportées par ces opérations entre les redémarrages de l’application. Bien qu’il existe différentes options de persistance des données dans les applications .NET, Entity Framework (EF) Core est une solution conviviale et adaptée à de nombreuses applications .NET.
Comprendre EF Core
EF Core est une technologie d’accès aux données légère, extensible, open source et multiplateforme pour les applications .NET.
EF Core peut servir de mappeur objet-relationnel qui :
- Permet aux développeurs .NET de travailler avec une base de données à l’aide d’objets .NET.
- Élimine la nécessité d’une grande partie du code d’accès aux données qui doit généralement être écrit.
EF Core prend en charge un grand nombre de bases de données populaires, notamment SQLite, MySQL, PostgreSQL, Oracle et Microsoft SQL Server.
Le modèle
Avec Entity Framework Core, l’accès aux données est effectué à l’aide d’un modèle. Un modèle est constitué de classes d’entité et d’un objet de contexte qui représente une session avec la base de données. L’objet de contexte permet l’interrogation et l’enregistrement des données.
La classe d'entité
Dans ce scénario, vous implémentez une API de gestion de pizzas, vous utilisez donc une classe d’entité Pizza. Les pizzas de votre boutique ont un nom et une description. Elles ont également besoin d’un ID pour permettre à l’API et à la base de données de les identifier. La classe d’entité Pizza que vous utilisez dans votre application identifie les pizzas :
namespace PizzaStore.Models
{
public class Pizza
{
public int Id { get; set; }
public string? Name { get; set; }
public string? Description { get; set; }
}
}
La classe de contexte
Cette application ne possède qu’une seule classe d’entité, mais la plupart des applications en ont plusieurs. La classe de contexte est responsable de l’interrogation et de l’enregistrement des données dans vos classes d’entité, ainsi que de la création et de la gestion de la connexion de base de données.
Effectuer des opérations CRUD avec EF Core
Après configuration d’EF Core, vous pouvez l’utiliser pour effectuer des opérations CRUD sur vos classes d’entité. Ensuite, vous pouvez développer sur des classes C#, en déléguant les opérations de base de données à la classe de contexte. Les fournisseurs de base de données le traduisent à son tour en langage de requête spécifique à la base de données. SQL pour une base de données relationnelle en est un exemple. Les requêtes sont toujours exécutées sur la base de données, même si les entités retournées dans le résultat existent déjà dans le contexte.
Interroger des données
L’objet de contexte expose une classe de collection pour chaque type d’entité. Dans l’exemple précédent, la classe de contexte expose une collection d’objets Pizza en tant que Pizzas. Étant donné que nous disposons d’une instance de la classe de contexte, vous pouvez interroger la base de données pour toutes les pizzas :
var pizzas = await db.Pizzas.ToListAsync();
Insertion des données
Vous pouvez utiliser le même objet de contexte pour insérer une nouvelle pizza :
await db.pizzas.AddAsync(
new Pizza { ID = 1, Name = "Pepperoni", Description = "The classic pepperoni pizza" });
Suppression de données
Les opérations de suppression sont simples. Elles n’ont besoin que d’un ID de l’élément à supprimer :
var pizza = await db.pizzas.FindAsync(id);
if (pizza is null)
{
//Handle error
}
db.pizzas.Remove(pizza);
Mettre à jour des données
De même, vous pouvez mettre à jour une pizza existante :
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.Description = updatepizza.Description;
pizza.Name = updatepizza.Name;
await db.SaveChangesAsync();
Utiliser la base de données en mémoire d’EF Core
EF Core comprend un fournisseur de base de données en mémoire qui peut être utilisé pour tester votre application. Le fournisseur de base de données en mémoire est utile pour le test et le développement, mais il ne doit pas être utilisé en production. Dans la leçon suivante, vous allez utiliser le fournisseur de base de données en mémoire pour créer une base de données et effectuer des opérations CRUD sur celle-ci.