Exercício - Usar o provedor de banco de dados SQLite com o EF Core

Concluído

Até este ponto, você tem salvo seus dados em um banco de dados na memória. Esse banco de dados é fácil de configurar e usar enquanto você desenvolve seu aplicativo, mas os dados não são persistentes. Como resultado, os dados serão perdidos quando o aplicativo for reiniciado. Antes de implantar seu aplicativo, você precisa persistir os dados em um banco de dados.

Neste exercício, você atualizará seu aplicativo para usar um banco de dados relacional para armazenar seus dados. Você usará o SQLite para armazenar seus dados.

Configurar o banco de dados SQLite

Conclua as seções a seguir para configurar o banco de dados SQLite.

Instale as seguintes ferramentas e pacotes

No terminal, instale os seguintes pacotes:

  1. SQLite EF Core Database Provider: Pode acessar muitos bancos de dados diferentes por meio de bibliotecas de plug-in chamadas provedores de banco de dados. O pacote a seguir é o provedor de banco de dados SQLite para o Entity Framework (EF) Core.

    dotnet add package Microsoft.EntityFrameworkCore.Sqlite --version 8.0
    
  2. ferramentas do EF Core: As Ferramentas para o EF Core executam tarefas de desenvolvimento durante a fase de design. Por exemplo, eles criam migrações, aplicam migrações e geram código para um modelo com base em um banco de dados existente.

    dotnet tool install --global dotnet-ef
    
  3. Microsoft.EntityFrameworkCore.Design: Contém toda a lógica de design do Entity Framework Core para criar o seu banco de dados.

    dotnet add package Microsoft.EntityFrameworkCore.Design --version 8.0
    

Habilitar a criação de banco de dados

Para habilitar a criação do banco de dados, você precisa definir a cadeia de conexão do banco de dados. Em seguida, você migrará seu modelo de dados para um banco de dados SQLite.

  1. No Program.cs, em var builder = WebApplication.CreateBuilder(args);, adicione uma cadeia de conexão.

    var connectionString = builder.Configuration.GetConnectionString("Pizzas") ?? "Data Source=Pizzas.db";
    

    Este código verifica o fornecedor de configurações para encontrar uma cadeia de conexão chamada Pizzas. Se não encontrar um, ele usará Data Source=Pizzas.db como a cadeia de conexão. SQLite mapeará essa cadeia de caracteres para um arquivo.

  2. Na parte CRUD deste tutorial, você usou um banco de dados na memória. Agora você vai substituir o banco de dados na memória por um banco de dados persistente.

    Substitua o seu atual builder.Services.AddDbContext<PizzaDb>(options => options.UseInMemoryDatabase("items")); de implementação de banco de dados em memória nos seus serviços de build pelo SQLite disponível aqui:

    builder.Services.AddSqlite<PizzaDb>(connectionString);
    
  3. Com a ferramenta de migração EF Core, agora você pode gerar sua primeira migração, InitialCreate. Salve todas as alterações e execute o seguinte comando:

    dotnet ef migrations add InitialCreate
    

    O EF Core cria uma pasta Migrações no diretório do projeto que contém dois arquivos com o código que representa as migrações de banco de dados.

  4. Agora que você concluiu a migração, pode usá-la para criar seu banco de dados e esquema.

    Em uma janela do terminal, execute o seguinte comando database update para aplicar migrações a um banco de dados:

    dotnet ef database update
    

    Você deve ver um arquivo de Pizzas.db recém-criado no diretório do projeto.

Executar e testar o aplicativo

Agora que você tem um banco de dados de backup, suas alterações serão persistentes.

Teste a sua aplicação como antes, usando o dotnet run e o Swagger UI. Pare o aplicativo usando o comando Ctrl+C . Em seguida, execute-o novamente e verifique se as alterações ainda persistem no Pizzas.db.

Parabéns;! Você conectou um banco de dados à sua API mínima!