Entity Framework Core pour C# (.NET) : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Qu'est-ce qu'Entity Framework Core et pourquoi en a-t-on besoin

\n

Entity Framework Core (EF Core) est un mappeur objet-relationnel (ORM) moderne pour la plateforme .NET, développé par Microsoft. Il permet aux développeurs de travailler avec des bases de données en utilisant des objets .NET, et élimine la nécessité d'écrire la majeure partie du code d'accès aux données.

\n\n

EF Core est une version légère, extensible et multiplateforme d'Entity Framework. Il prend en charge de nombreux SGBD, notamment SQL Server, SQLite, PostgreSQL, MySQL, Oracle et autres.

\n\n

Principales fonctionnalités d'EF Core :

\n
    \n
  • Création et mise à jour automatiques du schéma de base de données à partir du modèle (Code First)
  • \n
  • Exécution de requêtes sur la base de données à l'aide de LINQ (Language Integrated Query)
  • \n
  • Suivi automatique des modifications des objets et génération de commandes SQL pour la mise à jour des données
  • \n
  • Prise en charge des migrations pour gérer les modifications du schéma de base de données
  • \n
  • Prise en charge des relations entre entités (un-à-un, un-à-plusieurs, plusieurs-à-plusieurs)
  • \n
  • Chargement différé, immédiat et explicite des données associées
  • \n
\n\n

Installation d'Entity Framework Core

\n

L'installation d'EF Core se fait via le NuGet Package Manager. Contrairement à Python, on utilise dotnet add package ou le gestionnaire de packages Visual Studio.

\n\n

Installation via .NET CLI :

\n
dotnet add package Microsoft.EntityFrameworkCore\ndotnet add package Microsoft.EntityFrameworkCore.SqlServer\ndotnet add package Microsoft.EntityFrameworkCore.Tools
\n\n

Installation pour PostgreSQL (Npgsql) :

\n
dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL
\n\n

Installation pour SQLite :

\n
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
\n\n

Installation pour MySQL :

\n
dotnet add package Pomelo.EntityFrameworkCore.MySql
\n\n

Démarrage rapide avec un exemple de code

\n

Créons une simple application console pour travailler avec une base de données de livres.

\n\n

1. Création du modèle de données :

\n
public class Book\n{\n    public int Id { get; set; }\n    public string Title { get; set; }\n    public string Author { get; set; }\n    public int Year { get; set; }\n    public decimal Price { get; set; }\n}\n\npublic class Author\n{\n    public int Id { get; set; }\n    public string Name { get; set; }\n    public List<Book> Books { get; set; } = new();\n}
\n\n

2. Création du contexte de base de données :

\n
public class LibraryContext : DbContext\n{\n    public DbSet<Book> Books { get; set; }\n    public DbSet<Author> Authors { get; set; }\n\n    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n    {\n        optionsBuilder.UseSqlite("Data Source=library.db");\n    }\n}
\n\n

3. Utilisation d'EF Core pour travailler avec les données :

\n
using var context = new LibraryContext();\ncontext.Database.EnsureCreated(); // Crée la base de données si elle n'existe pas\n\n// Ajout de données\nvar author = new Author { Name = "Léon Tolstoï" };\nauthor.Books.Add(new Book { Title = "Guerre et Paix", Year = 1869, Price = 1500m });\nauthor.Books.Add(new Book { Title = "Anna Karénine", Year = 1877, Price = 1200m });\n\ncontext.Authors.Add(author);\ncontext.SaveChanges();\n\n// Lecture des données\nvar books = context.Books\n    .Where(b => b.Year > 1850)\n    .OrderBy(b => b.Year)\n    .ToList();\n\nforeach (var book in books)\n{\n    Console.WriteLine($"{book.Title} ({book.Year})");\n}
\n\n

Méthodes et fonctions principales d'Entity Framework Core

\n\n

1. Add

\n

Description : Ajoute une nouvelle entité au contexte dans l'état Added. Lors de l'appel à SaveChanges(), une commande INSERT sera exécutée.

\n

Paramètres :

\n
    \n
  • object entity

Recommendations