Primeiras aulas do curso Entity Framework Core: Banco de dados de forma eficiente

Entity Framework Core: Banco de dados de forma eficiente

Introdução ao Entity Framework Core - Visão geral do curso

Olá pessoal, Sejam bem vindos ao curso de Entity Framework Core da Alura. Meu nome é Daniel Portugal. Nesse primeiro vídeo vou mostrar como o curso está estruturado. Na primeira aula entenderemos o problema que o Entity Framework veio para resolver, e logo em seguida vamos aprender a instalar o Entity Framework Core para usar no nosso projeto. Basicamente, o curso está dividido em duas partes.

A primeira parte está voltada para mostrar como o Entity gerencia todo o SQL que estamos acostumados a fazer na mão. Tanto o SQL de manipulação, cujos comandos correspondem às operações de CRUD (Create, Read, Update e Delete), quanto o SQL de definição dos dados, que sincroniza as mudanças no modelo de negócios com banco de dados. Esses últimos são os scripts que em geral, enviamos para os DBAs executarem nos servidores para que o banco fique sincronizado com a versão mais atual de nossa aplicação.

A segunda parte está voltada para mostrar como o Entity Framework gerencia os relacionamentos criados nos nossos objetos. Os objetos não vivem sozinhos, estamos sempre tentando compor classes com outras classes, o que também acontece com objetos do modelo de negócios.

Falaremos dos relacionamentos um para um, um para muitos, e muitos para muitos, e principalmente como o Entity recupera dados relacionados criando comandos SELECT com JOIN.

Vamos começar?

Introdução ao Entity Framework Core - Introdução ao Entity Framework

Você deve estar se perguntando, o que é preciso para fazer esse curso com tranquilidade? O primeiro passo é ter o conhecimento de C# e Orientação à Objetos. A Alura possui três cursos com a linguagem C#.

Cursos de C# da Alura:

O segundo passo é baixar e instalar o Visual Studio 2017. Com a instalação da IDE, também virá o SQL Server Express, que é o banco de dados utilizado no projeto do curso.

Link para baixar o projeto

Por que Entity Framework?

Para responder o motivo de usar o Entity, é necessário entender as dificuldades que existiam antes do Entity. Após baixar o projeto do curso - que será encontrada nos exercícios -, descompactaremos e colocaremos na pasta de projetos do Visual Studio.

Com o Visual Studio aberto, vamos em "Arquivo > Abrir > Projeto/Solução":

abrir projeto

Agora dentro da pasta do projeto Alura.Loja, selecionaremos o arquivo Alura.Loja.sln. Essa Solução é do tipo Console Application, onde veremos o acesso ao banco de dados sem o Entity Framework.

Antes é necessário criar o banco de dados para efetuar a conexão. No Visual Studio, clicamos em "Exibir > Pesquisador de Objetos do SQL Server". Uma barra na lateral esquerda será aberta com a opção SQL Server. Ao expandir a opção SQL Server, temos a pasta Banco de Dados, clicaremos com o botão direito do mouse e selecionamos a opção "Adicionar Novo Banco de Dados".

adicionando novo banco de dados

Na opção Nome do Banco de Dados, colocaremos LojaDB, que é o domínio da aplicação, em seguida clicamos em "OK". A seguir podemos ver na barra que o banco foi criado, porém ainda não temos nenhuma tabela. Criaremos a tabela de produtos.

Dentro do projeto do curso existe um arquivo chamado ddl-produtos.txt, que contém o script de criação da tabela.

CREATE TABLE [dbo].[Produtos] (
    [Id] INT IDENTITY(1,1) NOT NULL,
    [Nome] NVARCHAR(MAX),
    [Categoria] NVARCHAR(MAX),
    [Preco] FLOAT (53),
    CONSTRAINT [PK_Produtos] PRIMARY KEY ([Id])
);

Nesse momento vemos a primeira diferença, antes do Entity, é necessário manter os scripts de criação e atualização da estrutura de dados.

Após copiar o script com "Ctrl + C", clicaremos com o botão direito do mouse em "Tabelas", e selecionaremos a opção "Adicionar Nova Tabela". Colaremos o script na aba T-SQL, o Visual Studio irá processar automaticamente e mostrar a tabela.

criando tabela T-SQL

Pressionamos em "Atualizar", localizado em cima da coluna Nome do banco de dados.

atualizar

Em seguida, na nova janela aberta clicaremos em "Atualizar Banco de Dados". Pronto! Podemos ver no campo esquerdo, dentro de "Tabelas" a tabela "dbo.Produtos" criada. Fecharemos a aba de criação de tabelas.

Como a nossa aplicação está fazendo acesso aos dados sem usar o Entity? No projeto, isolamos toda a responsabilidade de acesso aos dados com o banco em uma classe específica. Essa prática, é um padrão de arquitetura chamada de Data Access Object. Como estamos acessando os dados relacionados a classe Produto, essa responsabilidade ficou na classe ProdutoDAO. Vamos acessar essa classe.

Com a classe Program.cs aberta:

namespace Alura.Loja.Testes.ConsoleApp
{

    class Program
    {
        static void Main(String [] args)
        {
            GravarUsandoAdoNet();
        }

        private static void GravarUsandoAdoNet()
        {
            Produto p = new Produto();
            p.Nome = "Harry Potter e a Ordem da Fênix";
            p.Categoria = "Livros";
            p.Preco = 19.89;

            using (var repo = new ProdutoDAO())
            {
                repo.Adicionar(p);
            }
        } 
    }
}

Podemos colocar o cursos sobre a chamada repo.Adicionar(p); e teclar "F12". Dessa forma, seremos direcionados diretamente para o método Adicionar() na classe ProdutoDAO. Repare que no método Adicionar(), a comunicação com o banco de dados é feita por meio da linguagem SQL. Para esse curso, não é necessário ter conhecimentos avançados de SQL, mas caso se interesse pelo assunto, a Alura tem a carreira Iniciando com SQL e MySQL.

Sem o Entity, nós somos os responsáveis por montar o SQL na mão. Colocamos uma string com o comando que insere no banco de dados, passando algumas marcações que serão substituídas por parâmetros. No final executamos essa SQL.

 internal void Adicionar(Produto p)
 {
    try
    {
        IDbCommand insertCmd = conexao.CreateCommand();
        insertCmd.CommandText = "INSERT INTO Produtos (Nome, Categoria, Preco) VALUES (@nome, @categoria, @preco)";

        IDbDataParameter paramNome = new SqlParameter("nome", p.Nome);
        insertCmd.Parameters.Add(paramNome);

        IDbDataParameter paramCategoria = new SqlParameter("categoria", p.Categoria);
        insertCmd.Parameters.Add(paramCategoria);

        IDbDataParameter paramPreco = new SqlParameter("preco", p.Preco);
        insertCmd.Parameters.Add(paramPreco);

        insertCmd.ExecuteNonQuery();
    } catch (SqlException e)
    {
        throw new SystemException(e.Message, e);
    }
}

Além do método Adicionar(), temos também na classe ProdutoDAO métodos para atualizar, remover e recuperar produtos da base de dados. Esses comandos SQL são representados através de interfaces, que estão definidas no namespace System.Data, para representar o componente ADO.NET da Microsoft.

Uma das interfaces que faz parte desse componente é a IDbConnection, que usamos para conexão com o banco. Para implementar essa conexão, usamos a classe SqlConnection que fica no namespace System.Data.SqlClient. A classe SqlConnection representa um conexão com o SQL Server, caso deseje usar de algum outro banco de dados é necessários usar outra classe, cada banco possui a sua própria classe de conexão.

Se a aplicação não sofresse mudanças, não seria necessário usarmos o Entity. Se o cliente solicitar que seja removido o campo categoria da classe Produto, teríamos que tratar todas as SQL's, caso contrário não conseguiríamos compilar o código.

A aplicação ainda é pequena e já tivemos um grande trabalho. Imagine um aplicação enorme com várias classes de negócio, o impacto seria enorme, o que dificultaria a evolução da aplicação.

O ideal seria que alguém ficasse responsável pelo trabalho de criar as SQL's, passar parâmetros e assim por diante. É aí que entra o Entity Framework.

No próximo vídeo veremos como instalar Entity Framework.

Introdução ao Entity Framework Core - Instalando os pacotes necessários para o Entity

Nesse vídeo vamos aprender a instalar o Entity Framework no projeto. Precisamos instalar, porque diferentemente do ADO.Net, o Entity não vem disponível para acessarmos em nossas classes.

A instalação de pacotes com o Visual Studio é feita através de uma extensão chamada NuGet. Para acessá-la vamos em "Ferramentas > Gerenciador de Pacotes do NuGet > Console do Gerenciador de Pacotes".

No Console do Gerenciador de Pacotes podemos colocar diversos comandos para executar ações em nossos projetos. Um desses comandos é o "Install Package", que serve para instalar pacotes. A vantagem do Gerenciador de Pacotes é que ele verifica as dependências dos pacotes, e instala automaticamente o que é necessário.

O Console do Gerenciador de Pacotes também possui o recurso de autocomplete. Escreveremos no console "Install" e apertar a tecla "Tab", assim o autocomplete mostra as opções.

Usaremos a versão 1.1 para manter a consistência do curso. Vamos digitar no Console:

Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 1.1

É necessário estar conectado na internet, pois o pacote será baixado do repositório do NuGet. No próximo vídeo começaremos a usar o Entity, substituindo o ADO.Net.

Sobre o curso Entity Framework Core: Banco de dados de forma eficiente

O curso Entity Framework Core: Banco de dados de forma eficiente possui 240 minutos de vídeos, em um total de 74 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!

  • 1241 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1241 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1241 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1241 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Procurando planos para empresas?

Acesso por 1 ano

Estude 24h/dia onde e quando quiser

Novos cursos todas as semanas