Alura > Cursos de Programação > Cursos de .NET > Conteúdos de .NET > Primeiras aulas do curso Entity Framework: integre aplicações .NET com banco de dados

Entity Framework: integre aplicações .NET com banco de dados

Configurando o projeto - Apresentação

Olá, estudante! Boas-vindas ao curso de integração com o Entity Framework. Eu sou a Jennifer Bittencourt, instrutora na Escola de Programação — mas, se preferir, pode me chamar de Jenny —, e irei te acompanhar ao longo dessa jornada.

Audiodescrição: Jennifer se descreve como uma mulher branca, com cabelos ondulados na altura dos ombros pintados na cor azul turquesa, e olhos castanho-escuros. Ela usa óculos de armação redonda preta, veste um moletom cinza, e ao fundo, uma parede branca ao fundo está iluminada em degradê de azul e rosa, e há uma estante clara à esquerda da instrutora com alguns enfeites e livros, com um quadro de moldura preta logo acima.

O que vamos aprender?

Juntos, vamos aprender:

O projeto em que vamos trabalhar durante este curso será o Freelando. Freelando é uma plataforma de freelance que junta pessoas que têm projetos disponíveis com outras pessoas que estão oferecendo seus serviços e gostariam de trabalhar.

Quais são os pré-requisitos?

Para melhor aproveitamento dos conteúdos deste curso, é importante ter conhecimento sobre banco de dados e SQL, além de ter feito a formação C# Web: crie aplicações usando ASP.NET, principalmente o curso .NET: persistindo dados com Entity Framework Core.

Antes de iniciar este curso e avançar nos conhecimentos de Entity Framework, é importante saber que, além das videoaulas, na plataforma da Alura, temos atividades para aprofundar os seus conhecimentos em tudo o que for abordado durante as aulas. Aproveite essas atividades para continuar explorando sobre todos os assuntos que vamos conhecer ao longo do curso.

Além disso, este curso também conta com momentos Mão na massa, que são atividades práticas para aperfeiçoar os seus conhecimentos e colocar em prática tudo o que vamos conhecer.

Conclusão

Você pode sempre contar com o fórum e com o Discord da plataforma, para tirar suas dúvidas, trocar ideias sobre o que está aprendendo, e aprender junto com outras pessoas da comunidade.

Pega uma água, um cafezinho, ajeite-se na cadeira, e bons estudos!

Configurando o projeto - Iniciando com Entity

Nós fazemos parte da equipe que trabalha no Freelando, projeto que acabamos de conhecer melhor no vídeo de introdução do curso. Se você já passou pela atividade Preparando o ambiente, fez o download do projeto, e configurou o banco, o seu ambiente estará bem parecido com o nosso.

A partir disso, podemos começar a discutir melhor sobre o que vamos trabalhar.

Iniciando com Entity

Nossa situação atual no Freelando é que temos uma API, as classes de modelos, e um banco de dados já existente na plataforma, que é um banco legado.

Vamos conferir como ele está por enquanto?

Acessando o projeto no Visual Studio

Começaremos analisando o Pesquisador de Objetos do SQL Server à esquerda. Caso essa aba não apareça para você, basta ir até "Exibir > Pesquisador de Objetos do SQL Server".

Nessa aba, temos acesso ao banco de dados Freelando, que contém algumas tabelas. Percebemos que a nomenclatura dessas tabelas está um pouco diferente e não tão coerente com o padrão utilizado na nomenclatura dos modelos, isto é, das classes de negócio.

Vamos abrir uma dessas tabelas clicando com o botão direito sobre ela e selecionando a opção "Exibir Dados". Ao fazer isso, encontramos várias dados já adicionados, mas as colunas também têm uma nomenclatura diferente. Esse banco utiliza um padrão de nomenclatura mais antigo.

Trata-se de um banco de dados legado pronto que precisamos aproveitar. Precisaremos trabalhar para que a API se comunique e se integre com esse banco de dados já existente no Freelando.

Para nos ajudar nesse processo, vamos usar uma ferramenta que, se você passou pela formação C# Web, já conheceu um pouco: o Entity Framework Core. Durante esse curso, vamos conhecer ainda mais sobre ele e entender quais as vantagens de utilizar o Entity para fazer a relação entre o nosso banco de dados relacional e a estrutura orientada a objetos do nosso projeto.

Precisamos fazer algumas configurações para instalar o Entity no projeto e começar a utilizá-lo.

Criando o projeto Freelando.Dados

O primeiro passo será criar um projeto responsável por todas as informações relacionadas aos dados, isto é, relacionadas ao nosso banco de dados. Para isso, vamos clicar com o botão direito sobre "Solução 'Freelando'" no gerenciador de soluções e selecionar "Adicionar > Novo Projeto…".

Queremos adicionar um projeto de Biblioteca de Classes, então selecionaremos essa opção, e vamos chamá-lo de Freelando.Dados. Feito isso, vamos adicioná-lo à pasta da solução ("src") e clicar em "Próximo". Em "Estrutura", manteremos ".NET 8.0 (Suporte de Longo Prazo)" e clicaremos em "Criar".

Uma vez criado o projeto, teremos o total de três projetos:

Podemos apagar a classe Class1.cs, criada automaticamente como modelo, pois não vamos utilizá-la neste momento. Assim, finalizamos o primeiro passo: a criação do Freelando.Dados.

Instalando o Entity Framework Core

O próximo passo será instalar o Entity no projeto. Para isso, vamos até "Ferramentas > Gerenciador de Pacotes do NuGet > Gerenciar Pacotes do NuGet para a Solução…".

Na barra de pesquisa no canto superior esquerdo da aba "Procurar", vamos digitar "Entity Framework". Nesse caso, vamos instalar o Microsoft.EntityFrameworkCore.

Para instalar, basta clicar sobre ele, selecionar o projeto Freelando.Dados no menu lateral direito, no campo "Versões", e clicar em "Instalar". A instalação é rápida e, ao final, clicamos em "Eu Aceito" na janela "Aceitação de Licença".

Em seguida, vamos instalar também o Microsoft.EntityFrameworkCore.SqlServer. Novamente, vamos marcar o projeto Freelando.Dados e instalar no nosso pacote.

Finalizada a instalação, aparece uma marca verde no ícone dos pacotes selecionados.

Conclusão

Com isso, finalizamos as primeiras configurações necessárias para trabalhar com o Entity no nosso projeto. O Entity trará algumas facilidades, como permitir trabalhar com as próprias classes do projeto, sem precisar trabalhar com os scripts SQL propriamente ditos.

Além disso, ele irá trazer uma abstração dos dados, facilitando o trabalho com as informações do banco de dados; um alto desempenho; e a possibilidade de escalabilidade para a aplicação.

No próximo vídeo, faremos a configuração da conexão com o banco de dados utilizando o Entity!

Configurando o projeto - Configurando a conexão

Agora que instalamos o Entity no nosso projeto, precisamos realizar os próximos passos, referentes à configuração e à conexão dele com o banco de dados.

Configurando a conexão

Criando a classe FreelandoContext

Para começar, vamos clicar sobre o Freelando.Dados com o botão direito no gerenciador de soluções à esquerda, e ir até "Adicionar > Novo Item…". Esse item será do tipo "Classe" e vamos chamá-lo de FreelandoContext, onde faremos a configuração da conexão com o banco de dados.

FreelandoContext.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Freelando.Dados;
internal class FreelandoContext
{
}

Configurando a classe FreelandoContext

O primeiro passo será trocar a classe de internal para public, para conseguirmos acessar as informações. Além disso, FreelandoContext irá herdar de DbContext.

// código omitido

public class FreelandoContext : DbContext
{

}

As informações do contexto, isto é, sobre como configurar a conexão com o banco e o contexto em si, foram abordadas anteriormente no curso de Entity da formação C# Web, que é um pré-requisito da formação atual. Para evitar repetições, trouxemos pronta a parte de configuração do contexto:

// código omitido

public class FreelandoContext : DbContext
{
    private readonly IConfiguration _configuration;
    public FreelandoContext(DbContextOptions<FreelandoContext> options) : base(options)
    {
    }

    override protected void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        if (!optionsBuilder.IsConfigured)
        {
            optionsBuilder.UseSqlServer(_configuration.GetConnectionString("ConnectionStrings:DefaultConnection"));
        }
    }

    public DbSet<Candidatura> Candidaturas { get; set; }
    public DbSet<Cliente> Clientes { get; set; }
    public DbSet<Contrato> Contratos { get; set; }
    public DbSet<Especialidade> Especialidades { get; set; }
    public DbSet<Profissional> Profissionais { get; set; }
    public DbSet<Projeto> Projetos { get; set; }
    public DbSet<Servico> Servicos { get; set; }
}

Inicialmente, temos o construtor para o FreelandoContext. Depois, temos também as informações de conexão com o banco efetivamente, representada pela string de conexão.

Além disso, temos os DbSet, que irão informar para o Entity quais classes queremos que sejam entidades, ou seja, quais as classes do nosso modelo de negócios deverão ser tabelas no banco.

Adicionando a referência de projeto

Nesse caso, já temos os DbSet de todas as classes que queremos que sejam tabelas, mas no momento, eles não são identificados, pois ainda precisamos adicionar referência de projeto.

Para isso, vamos clicar com o botão direito sobre Freelando.Dados no gerenciador de soluções, e ir até "Adicionar > Referência de Projeto…". Em seguida, vamos selecionar o Freelando.Modelos. Dessa forma, será possível identificar as classes.

Por fim, com o atalho "Ctrl + .", pedimos para utilizar o projeto de modelos.

using Freelando.Modelo;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

// código omitido

Configurando a string de conexão

Agora, observe que onde deveríamos ter a string de conexão, passamos a informação "ConnectionStrings:DefaultConnection", indicando que deveria ser utilizada a conexão padrão.

// código omitido

override protected void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    if (!optionsBuilder.IsConfigured)
    {
        optionsBuilder.UseSqlServer(_configuration.GetConnectionString("ConnectionStrings:DefaultConnection"));
    }
}

// código omitido

Essa é uma boa prática: em vez de colocarmos a string de conexão do nosso banco no arquivo de contexto, levamos essa string de conexão para o arquivo de configuração do projeto, e se for necessária alguma alteração, faremos neste arquivo para refletir em todos os lugares que utilizem a string de conexão.

Para pegar a string de conexão do banco, podemos acessar o Pesquisador de Objetos do SQL Server na lateral esquerda, clicar sobre o banco Frelando com o botão direito e ir até "Propriedades".

Será aberta uma aba na lateral direita com a opção "Cadeia de conexão". Todas as informações nesse campo correspondem à string de conexão, então vamos copiar esse trecho de código.

Feito isso, no projeto Freelando.Api, temos o appsettings.json, que é o arquivo de configuração. Com ele aberto, vamos substituir a string de conexão (DefaultConnection) pelo conteúdo que acabamos de copiar.

appsettings.json:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "DefaultConnection": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=Freelando;Integrated Security=True;Connect Timeout=30;Encrypt=False;Trust Server Certificate=False;Application Intent=ReadWrite;Multi Subnet Failover=False"
  }
}

Verificando a string adicionada, ela já vem o nome do banco Freelando e todas as informações corretas. Você pode fazer o mesmo para o banco na sua máquina.

Após salvar o arquivo de configuração com "Ctrl + S", no arquivo FreelandoContext.cs, já temos a informação de onde serão coletados os dados da conexão, que é do arquivo de configuração appsettings.json. Agora, para alterar algo, não precisamos fazer em cada lugar que utiliza a string.

Informando o contexto que será utilizado

Finalizada a classe FreelandoContext, o próximo passo será informar para o Program.cs da API a string de conexão que iremos utilizar, isto é, qual contexto será utilizado.

Dito isso, vamos acessar o arquivo Program.cs no gerenciador de soluções e trazer essas informações. Após o builder.Services.AddSwaggerGen(), começaremos a fazer a configuração.

Primeiramente, chamaremos builder.Services.AddDbContext<>. Na sequência, vamos passar o contexto FreelandoContext para AddDbContext<>. Além disso, precisamos passar as opções, então entre os parênteses de uma arrow function, colocaremos as options com as quais iremos trabalhar.

Program.cs:

// código omitido

builder.Services.AddDbContext<FreelandoContext>((options) =>
{

});

// código omitido

Entre chaves, passaremos options.UseSqlServer() e, entre parênteses, faremos a configuração efetivamente. Primeiro, digitamos builder.Configuration[], e depois entre os colchetes, inserimos a configuração padrão (ConnectionStrings:DefaultConnection) definida no arquivo de configuração.

// código omitido

builder.Services.AddDbContext<FreelandoContext>((options) =>
{
    options.UseSqlServer(builder.Configuration["ConnectionStrings:DefaultConnection"]);
});

// código omitido

Conclusão

Com isso, finalizamos a configuração de conexão que será utilizada pela nossa API.

No arquivo FreelandoContext.cs, adicionamos as informações necessárias para fazer a conexão com o banco de dados. Também adicionamos as informações referentes às entidades, isto é, às classes de negócio que queremos que sejam consideradas como entidades pelo Entity.

Fizemos isso através do DbSet, e agora, conseguiremos integrar os dois universos: o universo relacional do banco de dados; e o universo da orientação a objetos, ou seja, da estrutura do projeto.

No próximo vídeo, vamos continuar adicionando o Entity ao projeto e verificando quais outras configurações precisamos fazer. Até lá!

Sobre o curso Entity Framework: integre aplicações .NET com banco de dados

O curso Entity Framework: integre aplicações .NET com banco de dados possui 130 minutos de vídeos, em um total de 55 atividades. Gostou? Conheça nossos outros cursos de .NET em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda .NET acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas