Bien démarrer avec EF Core

Dans ce tutoriel, vous allez créer une application console .NET Core qui effectue un accès aux données d’une base de données SQLite à l’aide d’Entity Framework Core.

Vous pouvez suivre le tutoriel à l’aide de Visual Studio sur Windows, ou à l’aide de l’interface CLI .NET sur Windows, macOS ou Linux.

Affichez l’exemple proposé dans cet article sur GitHub.

Prérequis

Installez les logiciels suivants :

Créer un projet

dotnet new console -o EFGetStarted
cd EFGetStarted

Installer Entity Framework Core

Pour installer EF Core, installez le package pour le ou les fournisseurs de bases de données EF Core à cibler. Ce tutoriel utilise SQLite, car il s’exécute sur toutes les plateformes prises en charge par .NET. Pour obtenir la liste des fournisseurs disponibles, consultez Fournisseurs de bases de données.

dotnet add package Microsoft.EntityFrameworkCore.Sqlite

Créer le modèle

Définissez une classe de contexte et des classes d’entité qui composent le modèle.

  • Dans le répertoire du projet, créez Model.cs avec le code suivant.
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    public string DbPath { get; }

    public BloggingContext()
    {
        var folder = Environment.SpecialFolder.LocalApplicationData;
        var path = Environment.GetFolderPath(folder);
        DbPath = System.IO.Path.Join(path, "blogging.db");
    }

    // The following configures EF to create a Sqlite database file in the
    // special "local" folder for your platform.
    protected override void OnConfiguring(DbContextOptionsBuilder options)
        => options.UseSqlite($"Data Source={DbPath}");
}

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }

    public List<Post> Posts { get; } = new();
}

public class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }

    public int BlogId { get; set; }
    public Blog Blog { get; set; }
}

EF Core peut également rétroconcevoir un modèle à partir d’une base de données existante.

Astuce : Cette application a été conçue intentionnellement simple par souci de clarté. Les chaînes de connexion ne doivent pas être stockées dans le code pour les applications de production. Vous pouvez également fractionner les différentes classes C# dans leur propre fichier.

Création de la base de données

Les étapes suivantes utilisent des migrations pour créer une base de données.

  • Exécutez les commandes suivantes :

    dotnet tool install --global dotnet-ef
    dotnet add package Microsoft.EntityFrameworkCore.Design
    dotnet ef migrations add InitialCreate
    dotnet ef database update
    

    Cette action installe dotnet ef et le package de conception requis pour exécuter la commande sur un projet. La commande migrations structure une migration afin de créer le jeu initial de tables du modèle. La commande database update crée la base de données et lui applique la nouvelle migration.

Créer, lire, mettre à jour et supprimer

  • Ouvrez Program.cs et remplacez le contenu par le code suivant :

    using System;
    using System.Linq;
    
    using var db = new BloggingContext();
    
    // Note: This sample requires the database to be created before running.
    Console.WriteLine($"Database path: {db.DbPath}.");
    
    // Create
    Console.WriteLine("Inserting a new blog");
    db.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
    db.SaveChanges();
    
    // Read
    Console.WriteLine("Querying for a blog");
    var blog = db.Blogs
        .OrderBy(b => b.BlogId)
        .First();
    
    // Update
    Console.WriteLine("Updating the blog and adding a post");
    blog.Url = "https://devblogs.microsoft.com/dotnet";
    blog.Posts.Add(
        new Post { Title = "Hello World", Content = "I wrote an app using EF Core!" });
    db.SaveChanges();
    
    // Delete
    Console.WriteLine("Delete the blog");
    db.Remove(blog);
    db.SaveChanges();
    

Exécuter l’application

dotnet run

Étapes suivantes