Skip to content

Instantly share code, notes, and snippets.

@nathy-mesquita
Created August 12, 2021 03:28
Show Gist options
  • Save nathy-mesquita/aa418947313bc19ee91ee193cbd438f6 to your computer and use it in GitHub Desktop.
Save nathy-mesquita/aa418947313bc19ee91ee193cbd438f6 to your computer and use it in GitHub Desktop.
SQLite e propagação de dados com Entity Framework Core

SQLite e propagação de dados com Entity Framework Core

Introdução

Pré-requisitos:

dotnet tool install --global dotnet-ef
cd DevFreela.API/
dotnet add package Microsoft.EntityFrameworkCore.Design --version 5.0.8
dotnet build
  • Configuração das Entidades para Tabelas prontas

Novo pacote, ConnectionString e configuração

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:

image

Procure por Microsoft.EntityFrameworkCore.Sqlite

image

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.jsonarquivo, 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")));

Crie o banco de dados com Migrations

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.

Use o navegador do banco de dados para SQLite

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.

Persistindo arquivos de banco de dados

dotnet ef database update -s ../DevFreela.API/DevFreela.API.csproj
  • -s é o projeto que irá consumir a camada de persistência que é a API

Populando os banco de dados via Request

Inicie o aplicativo com dotnet watch run, abra o Postman/ Swagger e use a URL http://localhost:5001/api/projectspara uma solicitação POST.

{
  "title": "Projeto SQLite",
  "description": "Migração para SQLite",
  "idCliente": 1,
  "idFreelancer": 1,
  "totalCost": 100
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment