Partager via


Démarrer avec EF Core

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

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

Consultez l’exemple de cet article sur GitHub.

Conditions préalables

Installez les logiciels suivants :

Créer un projet

dotnet new console -o EFGetStarted
cd EFGetStarted

Installer Entity Framework Core

Pour installer EF Core, vous installez le package pour le ou les fournisseurs de base de données EF Core que vous souhaitez cibler. Ce didacticiel 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 base 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 inverser l’ingénierie d’un modèle à partir d’une base de données existante.

Conseil : cette application conserve intentionnellement les choses simples pour plus de clarté. Les chaînes de connexion ne doivent pas être stockées dans le code des applications de production. Vous pouvez également fractionner chaque classe C# en son propre fichier.

Créer la base de données

Les étapes suivantes utilisent les 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
    

    Cela installe dotnet ef et le package de conception requis pour exécuter la commande sur un projet. La migrations commande génère une migration pour créer l’ensemble initial de tables pour le modèle. La database update commande crée la base de données et applique la nouvelle migration à celle-ci.

Créer, lire, mettre à jour & supprimer

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

    using System;
    using System.Linq;
    using Microsoft.EntityFrameworkCore;
    
    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" });
    await db.SaveChangesAsync();
    
    // Read
    Console.WriteLine("Querying for a blog");
    var blog = await db.Blogs
        .OrderBy(b => b.BlogId)
        .FirstAsync();
    
    // 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!" });
    await db.SaveChangesAsync();
    
    // Delete
    Console.WriteLine("Delete the blog");
    db.Remove(blog);
    await db.SaveChangesAsync();
    

Exécuter l’application

dotnet run

Étapes suivantes