- Introdução
- Pré-requisitos
- Novo pacote, ConnectionString e configuração
- Crie o banco de dados com Migrations
- Use o navegador do banco de dados para SQLite
- Persistindo arquivos de banco de dados
- Populando os banco de dados via Request
- EntityFrameworkCore Instalado → Microsoft.EntityFrameworkCore.Tools
- Ferramentas do EF Tools instalada globalmente para ter acesso as Migrations :
dotnet tool install --global dotnet-ef
- EntityFrameworkCore.Design Instalado na API
cd DevFreela.API/
dotnet add package Microsoft.EntityFrameworkCore.Design --version 5.0.8
dotnet build
- Configuração das Entidades para Tabelas prontas
A primeira coisa que temos que fazer para poder usar um banco de dados SQLite é adicionar um novo pacote: Microsoft.EntityFrameworkCore.Sqlite
Na Camada de Infraestructure
vamos abrir o gerenciador de pacotes NuGet:
Procure por Microsoft.EntityFrameworkCore.Sqlite
Ou por CLI:
Install-Package Microsoft.EntityFrameworkCore.Sqlite -Version 5.0.9
Após a instalação o arquivo .csproj
é para estar da seguinte maneira:
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.8">
</PackageReference>
Depois disso, temos que alterar ou adicionar a string de conexão para o banco de dados SQLite.
No appsettings.json
arquivo, adicionamos uma nova string, SqliteConnection
, e a definimos como Data Source=Database\\DevFreela.db
.
"ConnectionStrings": {
"DevFreelaCs": "Server=localhost\\SQLEXPRESS;Database=DevFreela;Trusted_Connection=True;",
"SqliteConnection": "DataSource=Database\\DevFreela.db"
}
Assim que adicionarmos nossas Migrations e atualizarmos o banco de dados pela primeira vez, o Entity Framework Core criará esse arquivo.
Finalmente, fazemos uma mudança no ConfigureServices()
método em Startup.cs
. Em vez do SQL Server, agora estamos usando SQLite e a nova string de conexão.
services.AddDbContext<DevFreelaDbContext>(o => o.UseSqlite(Configuration.GetConnectionString("SqliteConnection")));
Como o DevFreelaDbContext
agora está configurado para usar um banco de dados SQLite, os arquivos de migrations existentes não funcionarão.
A maneira mais fácil de criar o banco de dados SQLite com a migration code-first é excluir a pasta de migrações e adicionar uma nova InitialMigration
.
Assim que você remover a pasta com todos os arquivos de migrations, adicione uma migration novamente execute os comandos na pasta do projeto Infraestructure
cd DevFreela.Infrastructure/
Comando para gerar a Migratios:
dotnet ef migrations add InitialMigration -s ../DevFreela.API/DevFreela.API.csproj -o ./Persistence/Migrations
-s
é o projeto que irá consumir a camada de persistência que é a API-o
é o parâmetro output para definir qual vai será a pasta que iremos criar essa Migration (Se não passar nenhum output irá criar na raiz do projeto Infraestructure)
Agora precisamos de uma ferramenta para abrir o arquivo e navegar pelo banco de dados.
A ferramenta mais usada para criar, projetar e editar arquivos de banco de dados compatíveis com SQLite seria o DB Browser for SQLite.
Você pode baixá-lo em sqlitebrowser.org está disponível para Windows, macOS e Linux.
Após a instalação, abra o arquivo de banco de dados de nosso aplicativo da web que pode ser encontrado no diretório raiz do projeto.
Familiarize-se um pouco com o DB Browser.
Você encontra a estrutura do banco de dados com todas as tabelas na primeira guia. Para ver o conteúdo de uma tabela, você pode selecionar a segunda guia “Browse Data” e selecionar a tabela que deseja ver.
Ao adicionar, editar ou excluir um registro, certifique-se de clicar no botão “Gravar alterações” no menu superior para tornar suas alterações persistentes.
Qualquer chamada de serviço web funciona como antes, mas agora armazena os dados no banco de dados SQLite - graças ao Entity Framework.
dotnet ef database update -s ../DevFreela.API/DevFreela.API.csproj
-s
é o projeto que irá consumir a camada de persistência que é a API
Inicie o aplicativo com dotnet watch run
, abra o Postman/ Swagger e use a URL http://localhost:5001/api/projects
para uma solicitação POST.
{
"title": "Projeto SQLite",
"description": "Migração para SQLite",
"idCliente": 1,
"idFreelancer": 1,
"totalCost": 100
}