DEV Community

André N. Darcie
André N. Darcie

Posted on

Como adicionar banco de dados em uma aplicação .NET 7 [PT-BR]

Criação do projeto

Vamos começar criando o projeto. Antes disso, precisamos verificar se a versão do .NET instalada corresponde à do tutorial, executando o comando dotnet --version. No meu caso, a versão é 7.0.102.

Em seguida, execute o comando para encontrar as opções de templates disponíveis:
dotnet new list

No meu caso vou criar uma aplicação Web API:
dotnet new webapi

Vamos executar o projeto para garantir que tudo está funcionando:
dotnet run

Configuração do SQLite

Vamos dicionar os pacotes:
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
dotnet add package Microsoft.EntityFrameworkCore.Design

E instalar a ferramenta:
dotnet tool install --global dotnet-ef

O arquivo .csproj mostrará a inclusão da referência ao pacote Microsoft.EntityFrameworkCore.Sqlite:
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="7.0.4" />

Agora é hora de criar a classe DbContext:
dotnet ef dbcontext scaffold "Data Source=bancoDeDados.sqlite" Microsoft.EntityFrameworkCore.Sqlite -o Models

No arquivo "appsettings.Development.json", adicione a seção "ConnectionStrings" com a string de conexão correspondente:
"ConnectionStrings": {
"MeuBancoDeDados": "Data Source=bancoDeDados.sqlite"
}

No arquivo "Models\BancoDeDadosContext.cs" remova o método "OnConfiguring", pois já colocamos a string de conexão no arquivo appsettings.

Na classe "Program.cs" adicione o seguinte para configurar o uso do DbContext e da string de conexão criada:
builder.Services.AddDbContext<BancoDeDadosContext>(options =>
options.UseSqlite(builder.Configuration.GetConnectionString("MeuBancoDeDados")));

Crie uma tabela de teste

Apenas para garantir que esta tudo certo vamos criar uma tabela no banco de dados.

Crie uma classe "Pessoa" na pasta "Models" com uma propriedade "Id".

No arquivo "Models\BancoDeDadosContext.cs", adicione o código:

public DbSet<Pessoa> Pessoas { get; set; }

Execute o comando para adicionar uma migration e revise os novos arquivos gerados na pasta Migrations:
dotnet ef migrations add AdicionaPessoa

E finalmente, execute o comando dotnet ef database update para criar a tabela no banco de dados.

Conclusão

A tabela "Pessoas" está criada no banco de dados e tudo está funcionando como esperado. Verifique se tudo foi executado corretamente e prossiga com o desenvolvimento do projeto.

Oldest comments (4)

Collapse
 
diguifi profile image
Diego Penha

Conteúdo incrível! Precisamos de mais posts em pt/br sobre . NET 7!!

Collapse
 
andredarcie profile image
André N. Darcie

Muito obrigado pelo feedback!! Sem duvida é algo que faz falta!

Collapse
 
raibtoffoletto profile image
Raí B. Toffoletto

Legal o artigo, conciso e direto ao ponto. 🎉

Questão, o nuget EntityFrameworkCore.Tools instala o cli da EF ? eu sempre instalo ele usando dotnet tool install dotnet-ef em conjunto com o nuget EntityFrameworkCore.Design

Collapse
 
andredarcie profile image
André N. Darcie • Edited

Muito obrigado pelo feedback!!

Sobre a dúvida, o Microsoft.EntityFrameworkCore.Tools é um pacote NuGet que fornece ferramentas adicionais de linha de comando para o Entity Framework Core, coisas como: Scaffold-DbContext, Add-Migration, Update-Database e Remove-Migration.

Só que o comando "dotnet add package" adiciona o pacote nas dependências apenas do projeto em questão, já o "dotnet tool install dotnet-ef" instala a ferramenta dotnet-ef globalmente ou localmente em seu sistema. Isso significa que você pode usá-lo em qualquer projeto sem precisar instalar o pacote Microsoft.EntityFrameworkCore.Tools em cada projeto separadamente.

Com base na Microsoft a diferença entre os pacotes que você citou é:

Editei o post para adicionar essas informações, pois realmente faltou a parte falando para executar o comando "dotnet tool install --global dotnet-ef" e adicionar o pacote "dotnet add package Microsoft.EntityFrameworkCore.Design", nesse caso o "Microsoft.EntityFrameworkCore.Tools" não é necessário.

Muito obrigado, qualquer coisa estou a disposição!