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.
Juntos, vamos aprender:
- A integrar o Entity Framework, um banco de dados já existente;
- A aplicar as convenções e entender como trabalhar com elas em diversas situações;
- A utilizar a Fluent API para otimizar e flexibilizar o código;
- A implementar soluções de mapeamento de entidades que estão fora das convenções do Entity;
- A relacionar entidades trabalhando as particularidades de cada tipo de relacionamento;
- A manipular os dados do banco utilizando os recursos do Entity;
- E a trabalhar com consultas otimizadas e relatórios.
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.
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.
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!
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.
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?
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.
Freelando
- "Tabelas"
- "Tabelas do Sistema"
- "Tabelas do Razão Descartadas"
dbo.TB_Candidaturas
dbo.TB_Clientes
dbo.TB_Contratos
dbo.TB_Especialidades
dbo.TB_Profissionais
dbo.TB_Projetos
dbo.TB_Servicos
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.
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:
- O
Freelando.Api
;- O
Freelando.Modelos
;- E o
Freelando.Dados
.
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
.
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.
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!
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.
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
{
}
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.
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
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.
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
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á!
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:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.