Bien démarrer avec EF Core sur une application console .NET Core avec une nouvelle base de donnéesGetting Started with EF Core on .NET Core Console App with a New database

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.In this tutorial, you create a .NET Core console app that performs data access against a SQLite database using Entity Framework Core. Vous utilisez des migrations pour créer la base de données à partir du modèle.You use migrations to create the database from the model. Consultez ASP.NET Core - Nouvelle base de données pour une version de Visual Studio utilisant ASP.NET Core MVC.See ASP.NET Core - New database for a Visual Studio version using ASP.NET Core MVC.

Affichez l’exemple proposé dans cet article sur GitHub](https://github.com/aspnet/EntityFramework.Docs/tree/master/samples/core/GetStarted/NetCore/ConsoleApp.SQLite).View this article's sample on GitHub](https://github.com/aspnet/EntityFramework.Docs/tree/master/samples/core/GetStarted/NetCore/ConsoleApp.SQLite).

PrérequisPrerequisites

Créer un projetCreate a new project

  • Créez un projet de console :Create a new console project:

    dotnet new console -o ConsoleApp.SQLite
    cd ConsoleApp.SQLite/
    

Installer Entity Framework CoreInstall Entity Framework Core

Pour utiliser EF Core, installez le package pour le ou les fournisseurs de bases de données à cibler.To use EF Core, install the package for the database provider(s) you want to target. Cette procédure pas à pas utilise SQLite.This walkthrough uses SQLite. Pour obtenir la liste des fournisseurs disponibles, consultez Fournisseurs de bases de données.For a list of available providers see Database Providers.

  • Installez Microsoft.EntityFrameworkCore.Sqlite et Microsoft.EntityFrameworkCore.Design.Install Microsoft.EntityFrameworkCore.Sqlite and Microsoft.EntityFrameworkCore.Design

    dotnet add package Microsoft.EntityFrameworkCore.Sqlite
    dotnet add package Microsoft.EntityFrameworkCore.Design
    
  • Exécutez dotnet restore pour installer les nouveaux packages.Run dotnet restore to install the new packages.

Créer le modèleCreate the model

Définissez le contexte et les classes d’entité qui composeront le modèle.Define a context and entity classes that make up your model.

  • Créez un nouveau fichier Model.cs avec le contenu suivant.Create a new Model.cs file with the following contents.

    using Microsoft.EntityFrameworkCore;
    using System.Collections.Generic;
    
    namespace ConsoleApp.SQLite
    {
        public class BloggingContext : DbContext
        {
            public DbSet<Blog> Blogs { get; set; }
            public DbSet<Post> Posts { get; set; }
    
            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
                optionsBuilder.UseSqlite("Data Source=blogging.db");
            }
        }
    
        public class Blog
        {
            public int BlogId { get; set; }
            public string Url { get; set; }
    
            public List<Post> Posts { get; set; }
        }
    
        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; }
        }
    }
    

Conseil : Dans une application réelle, vous placez chaque classe dans un fichier distinct et la chaîne de connexion dans un fichier de configuration ou une variable d’environnement.Tip: In a real application, you put each class in a separate file and put the connection string in a configuration file or environment variable. Pour simplifier le tutoriel, tout est placé dans un seul et même fichier.To keep the tutorial simple, everything is contained in one file.

Créer la base de donnéesCreate the database

Une fois que vous avez un modèle, vous utilisez des migrations pour créer une base de données.Once you have a model, you use migrations to create a database.

  • Exécutez dotnet ef migrations add InitialCreate pour générer automatiquement un modèle de migration et créer l’ensemble initial de tables du modèle.Run dotnet ef migrations add InitialCreate to scaffold a migration and create the initial set of tables for the model.
  • Exécutez dotnet ef database update pour appliquer la nouvelle migration à la base de données.Run dotnet ef database update to apply the new migration to the database. Cette commande crée la base de données avant d’appliquer des migrations.This command creates the database before applying migrations.

La base de données SQLite blogging.db* se trouve dans le répertoire du projet.The blogging.db* SQLite DB is in the project directory.

Utiliser le modèleUse the model

  • Ouvrez le fichier Program.cs et remplacez le contenu par le code suivant :Open Program.cs and replace the contents with the following code:

    using System;
    
    namespace ConsoleApp.SQLite
    {
        public class Program
        {
            public static void Main()
            {
                using (var db = new BloggingContext())
                {
                    db.Blogs.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
                    var count = db.SaveChanges();
                    Console.WriteLine("{0} records saved to database", count);
    
                    Console.WriteLine();
                    Console.WriteLine("All blogs in database:");
                    foreach (var blog in db.Blogs)
                    {
                        Console.WriteLine(" - {0}", blog.Url);
                    }
                }
            }
        }
    }
    
  • Testez l’application :Test the app:

    dotnet run

    Un blog est enregistré dans la base de données et les détails de tous les blogs s’affichent dans la console.One blog is saved to the database and the details of all blogs are displayed in the console.

    ConsoleApp.SQLite>dotnet run
    1 records saved to database
    
    All blogs in database:
    - http://blogs.msdn.com/adonet
    

Modification du modèle :Changing the model:

  • Si vous apportez des modifications au modèle, vous pouvez utiliser la commande dotnet ef migrations add pour générer automatiquement une nouvelle migration.If you make changes to the model, you can use the dotnet ef migrations add command to scaffold a new migration. Après avoir vérifié le code de modèle généré automatiquement (et effectué toutes les modifications nécessaires), vous pouvez utiliser la commande dotnet ef database update pour appliquer les modifications de schéma à la base de données.Once you have checked the scaffolded code (and made any required changes), you can use the dotnet ef database update command to apply the schema changes to the database.
  • EF Core utilise une table __EFMigrationsHistory dans la base de données pour effectuer le suivi des migrations qui ont déjà été appliquées à la base de données.EF Core uses a __EFMigrationsHistory table in the database to keep track of which migrations have already been applied to the database.
  • Le moteur de base de données SQLite ne prend pas en charge certaines modifications de schéma qui sont prises en charge par la plupart des autres bases de données relationnelles.The SQLite database engine doesn't support certain schema changes that are supported by most other relational databases. Par exemple, l’opération DropColumn n’est pas prise en charge.For example, the DropColumn operation is not supported. Les migrations EF Core génèrent du code pour ces opérations,EF Core Migrations will generate code for these operations. mais si vous tentez de les appliquer à une base de données ou de générer un script, EF Core lève des exceptions.But if you try to apply them to a database or generate a script, EF Core throws exceptions. Consultez Limitations de SQLite.See SQLite Limitations. Pour tout nouveau développement, il est préférable de supprimer la base de données et d’en créer une nouvelle plutôt que d’utiliser des migrations quand le modèle change.For new development, consider dropping the database and creating a new one rather than using migrations when the model changes.

Ressources supplémentairesAdditional Resources