25% OFF
Curso Entity Framework Core 2.0

Curso Entity Framework 2.0 

Do básico ao intermediário

95 vídeo aulas em 15 módulos

Com exercícios propostos e resolvidos

Conteúdo e duração de cada Vídeo Aula

Módulo 1 - Fundamentos

1a. Apresentação - 4:58 minutos
- Apresentação do Curso

2a. Introdução -  6:59 minutos
- Apresentação do EF Core

3a. Configurando o Ambiente -  6:48 minutos
- Pacotes necessários
- EF Core Provider
- EF Core Tools
- Provedores de banco de dados
- Instalação dos pacotes : VStudio e Package Manager Console

4a.Abordagens de desenvolvimento - 2:35 minutos
- Abordagem : Code-First e Database-First
- Apresentando Code-First
- Apresentando DB-First
- Vantagens de cada abordagem

5a. DbContext e DbSet -  6:52 minutos
- O Mapeamento ORM: Classes de domínio e BD
- Classes DbContext e DbSet
- Modelo de Entidades e Classe de Contexto
- O papel do DbContext
- O papel do DbSet

Atividade
- Atividade1
- Atividade2
- Resolução das Atividades

Exercício
- Exercício Proposto
- Resolução do Exercício

Módulo 2 - DB-First

1a. Abordagem DB-First : Criando o BD e tabela - 7:08  minutos
- Usando a Abordagem DB-First
- Criando o banco de dados e tabela no SQL Server
- Usando o Object Explorer do VS 2017 Community

2a. Acessando Dados via DB-First -  9:59 minutos
- Criando uma app no VS 2017
- Referenciar os pacotes do EF Core
- Criando a classe de Contexto
- Definir o mapeamento usando o DbSet<T>
- Definir o modelo de  entidades
- Acessando e exibindo dados

3a. DB-First - Scaffolding I - 8:18 minutos
- Gerando as entidades e classe de contexto
- Usando o Scaffold-DbContext
- Definindo a string de conexão e o provedor do BD
- Aplicar o comando Scaffold-DbContext

4a. DB-First - Scaffolding II -  6:37 minutos
- Usando o Scaffold-DbContext com mais de uma tabela
- Usando o banco de dados Northwind.mdf
- Gerando as entidades e classe de Context
- Aplicando o comando Scaffold-DbContext

5a. DB-First - Usando a linha de comando a NET CLI  I - 7:19 minutos
- Usando o .NET Core SDK e o Visual Studio Code
- Usando a ferramenta de linha de comando NET CLI
- Criando um projeto console: dotnet new console
- Instalando os pacotes do EF Core: dotnet add package
- Criando o modelo de entidades e a classe de contexto
- Compilando e Executando o projeto: dotnet build e dotnet run

6a. DB-First - Usando a linha de comando a NET CLI  II -  6:15  minutos
- Usando o .NET Core SDK e o Visual Studio Code
- Usando a ferramenta de linha de comando NET CLI
- Instalando os pacotes do EF Core e das ferramentas
- Gerando o modelo de entidades e a classe de contexto via NET CLI

Atividades
- Atividade1
- Atividade2
- Atividade3
- Resolução das Atividades

Módulo 3 - Code-First

1a. Conceitos - 3:25  minutos
- Apresentando a Abordagem Code-Frist
- Gerando o banco de dados e as tabelas
- Criando o modelo de entidades
- Criando a classe de Contexto
- Definindo o mapeamento DbSet<T>
- Definindo o provedor e a string de conexão
- Aplicando o Migrations : Add-Migrations e Update-Database

2a. Fundamentos do EF Core Migrations - 3:54 minutos
- Apresentando o Migrations
- Add-Migration - gerando o script com comandos SQL
- update-database - aplicando o script e gerando o BD e tabelas
- Os pacotes necessários para usar o MIgrations

3a. Code-First : Criando o BD e tabelas -  9:05 minutos
- Criando o modelo de entidades
- Criando a classe de contexto
- Usando o método OnConfiguring()
- Definindo o provedor do BD e a string de conexão
- Aplicando o migrations
- O Script de migração

4a. Populando o banco de dados Via código -  8:00 minutos
- Populando o banco de dados com dados iniciais
- Opções : via código e via Migrations
- Populando o BD via código : classe SeedDatabase
- Usando o método Add/AddRange e SaveChanges

5a. Populando o banco de dados Via Migrations -  4:33 minutos
- Populando o banco de dados com dados iniciais
- Opções : via código e via Migrations
- Populando o BD via Migrations
- Usando os métodos Up() e Down() do migrations
- Usando o método SQL da instância MigrationBuilder
- Comandos SQL: Insert Into e Delete From

6a. Populando o banco de dados usando HasData -  8:41 minutos
- Populando o banco de dados com dados iniciais
- Populando o BD via método HasData do EF Core 2.1
- Usando o método HasData no método OnModelCreating
- Criando um método de extensão para usar o HasData

7a. Code-First - Usando a linha de comando a NET CLI  I  -  12:58 minutos

- Usando o .NET Core SDK e o VS Code
- Usando a linha de comando NET CLI
- Criando um projeto via NET CLI : dotnet new console
- Instalando os pacotes do EF Core e do provedor do BD
- Criando a entidade e classe de contexto
- Definindo o mapeamento com DbSet<T>
- Aplicando Migrations e criando o BD e a tabela

Atividades
- Atividade1
- Atividade2
- Atividade3
- Resolução das Atividades

Módulo 4 - Tratando-Objetos: CRUD

1a. Incluindo dados  - 9:53 minutos
- Adicionando dados via DbContext
- Usando os métodos Add e AddRange
- Criar a entidade a ser incluida
- Criar uma instância da classe de Contexto
- Incluir a entidade no contexto via métodos Add ou AddRange
- Persistir as informações usando o método SaveChanges() 

2a. Alterando dados -  6:04 minutos
- Alterando dados de entidades existentes via DbContext
- O Cenário Conectado : entidades rastreadas pelo contexto
- Alterando o EntityState como Modified
- Persistir as informações usando o método SaveChanges() 
- O EF Core gera um comando SQL UPDATE para atualizar o BD

-3a. Excluindo Dados - 4:50 minutos
- Deletando entidades existenes via DbContext
- O Cenário Conectado : entidades rastreadas pelo contexto
- Alterando o EntityState como Deleted
- Persistir as informações usando o método SaveChanges() 
- O EF Core gera um comando SQL DELETE para atualizar o BD

4a. Combinando Operações - 8:09 minutos
- Realizando várias operações em um SaveChanges
- O SaveChanges é transacional
- Se alguma operação falar todas as operações falham
- Incluindo, alterando e excluindo entidades em um SaveChanges
- Persistindo as informações com SaveChanges()

Atividades
- Atividade1
- Resolução da Atividade

Módulo 5 - Configuração-Convenções

1a. As convenções de Configuração  I - 10:56 minutos
- Chave Primária
- Schema
- Colunas das tabelas
- Tipos de dados das colunas
- Tabelas

2a.  As convenções de Configuração II -  6:27 minutos
- Nome das Tabelas com base nas entidades relacionadas 
- Exemplo de aplicação da Convenção
- Mapeando entidades sem a propriedade DbSet

3a. As convenções padrão III - Foreign key -  8:14 minutos
- Convenções aplicadas a chave estrangeira - foreign key
- Nome prop. Navegacao+Nome Prop. Chave Primária+Id
- Nome prop. chave primária+Id
- Aplicando as convenções para foreign key

4a. As convenções de Configuração IV -  4:24 minutos
- Convenções adotadas para as colunas das tabelas
- Colunas nulas ou Null
- Tipos dados de referência e tipos primitivos anúláveis
- Colunas não nulas ou Not Null
- Chaves primárias e tipos primitivos : int, float, decimal, DateTime
- Aplicação em exemplo prático

5a. Convenções um-para-um -  6:09  minutos
- Definindo o relacionamento um-para-um
- Propriedade de navegação referenciada ambas entidades
- Incluir prop. que defina a chave estrangeira (opcional)
- Exemplo prático

Atividades
- Atividade1
- Atividade2
- Atividade3
- Resolução das Atividades

Módulo 6 - Configuração : Data Annotation

1a. Sobrescrevendo as Convenções - 8:51 minutos
- Sobrescrevendo as convenções usando a Configuração
- Data Annotations - decorar classes e propriedades com atributos
- Fluent API - usa métodos encadeados aplicados a entidades
- Como funcionam as configurações
- Exemplo prático no VS 2017

2a. Configuração Data Annotations I -  7:20 minutos
- Aplicando atributos Data Annotations
- System.ComponentModel.DataAnnotations
- System.ComponentModel.DataAnnotations.Schema
- Atributos: Table e Column
- Aplicação prática
 
3a. Configuração Data Annotations II -  6:06 minutos
- Aplicando atributos Data Annotations
- Atributos : Key e DatabaseGenerated
- Aplicação prática

4a. Configuração Data Annotations III -  6:16 minutos
- Aplicando atributos Data Annotations
- Atributos : NotMapped , Required (Not Null), MaxLength, StringLength
- Aplicação prática

5a. Configuração Data Annotations III -  9:13 minutos
- Aplicando atributos Data Annotations
- Atributos : ForeignKey
- Opções de configuração para chave estrangeira
- Aplicação prática

Atividade
- Atividade1
- Atividade2
- Resolução das Atividades

Módulo 7 - Configuração : Fluent API

1a. Sobrescrevendo as configurações : Fluent API - 4:10 minutos
- Apresentando a Fluent API
- Configurando Modelo, Entidades e Propriedades
- Como usar a Fluent API
- Usando o método OnModelCreating() e a instância de ModelBuilder
- Aplicando os métodos da Fluent API - chamada encadeada de métodos
- Definir classes de configuração separadas: IEntityTypeConfiguration<T>

2a. Configuração Fluent API I -  5:42 minutos
- Apresentando os métodos do Model
- Métodos: HasDefaultSchema(), Ignore<T>()
- Aplicação prática
- Métodos : HasDbFunction(), HasSequence(), HasAnnotation()
 
3a. Configuração Fluent API II -  5:32 minutos
- Apresentando os métodos a nível de Entidade : ModelBuilder.Entity()
- As versões genéricas e não genéricas
- Métodos : ToTable() e  HasKey()
- Aplicação prática no VS 2017

4a. Configuração Fluent API III -  7:56 minutos
- Apresentando os métodos a nível de Entidade : ModelBuilder.Entity()
- Métodos: HasKey() com chaves compostas, HasIndex() e IsUnique(),
- HasAlternateKey() criando uma chave alternativa
- Aplicação prática no VS 2017

5a. Configuração Fluent API IV -  9:12 minutos
- Apresentando os métodos a nível de Propriedade
- Usando  ModelBuilder.Entity<T>().Property(p=> p.Propriedade)
- Métodos: HasColumnName(), HasColumnType(), HasDefaultValue()
- HasDefaultValueSql(), HasMaxLength(), IsRequired(),
- Aplicação prática no VS 2017

6a. Configuração Fluent API V -  4:55 minutos
- Apresentando os métodos a nível de Propriedade
- Métodos: ValueGeneratedNever(), ValueGeneratedOnAdd()
- ValueGeneratedOnAddOrUpdate(), IsConcurrencyToken()
- Aplicação prática no VS 2017

7a.  Configuração Fluent API VI -  6:47 minutos
- Movendo a configuração para classes separadas
- Classes de configuração : IEntityTypeConfiguration<T>()
- Usando o método Configure() e aplicando o ApplyConfiguration()
- Aplicação prática no VS 2017

Atividades
- Atividade1
- Resolução da Atividade

Módulo 8 - Configuração : Relacionamentos

1a. Relacionamentos - Terminologia e Conceitos - 7:16 minutos
- Modelo de dados, Entidade Principal, Chave Principal,
- Entidade Dependente, Chave Estrangeira, Propriedade de Navegação
- Configurando relacionamentos - Padrão Has/With (Fluent API) 
- Padrão Has/With - HasOne / HasMany e WithOne / WithMany

2a. Relacionamento um-para-um   -  7:33 minutos
- Relacionamento um-para-um usando a Fluent API
- Definindo as propriedades de navegação de referência
- Padrão Has/With - HasOne/WithOne e HasForeignKey
- Aplicando Migrations
- Aplicação prática no VS 2017
 
3a. Relacionamento um-para-muitos  - 8:38 minutos
- Relacionamento um-para-muitos usando a Fluent API
- Definindo as propriedades de navegação de referência e Coleção
- Padrão Has/With - HasMany/WithOne e HasOne/WithMany
- Chave estrangeira: obrigatório e não obrigatória
- Relacionamento opcional, OnDelete(DeleteBehavior.valor)
- Cascade, Restrict e SetNull

4a. Relacionamentos um-para-muitos Prática - 10:27 minutos
- Exemplo no VS 2017
- Relacionamento um-para-muitos usando a Fluent API
- Definindo as propriedades de navegação de referência e Coleção
- Padrão Has/With - HasMany/WithOne e HasOne/WithMany
- Aplicando Migrations

5a. Relacionamentos muitos-para-muitos Conceitos -  7:32 minutos
- Relacionamento muitos-para-muitos usando a Fluent API
- Criando a entidade que representa a tabela de junção
- Definir prop. de navegação e referência de cada entidade
- Definir relacionamento um-para-muitos entre entidades e entidade de junção
- Configurar chave estrangeira na entidade de junção como chave composta
- Aplicar padrão Has/With - HasOne/WithMany e HasForeignKey()

6a. Relacionamentos muitos-para-muitos  -  10:19 minutos
- Relacionamento um-para-muitos usando a Fluent API
- Criando entidade de junção
- Definindo prop. de navegação e referência nas entidades
- Configurando a chave composta via Fluent API
- Aplicando Migrations
- Exemplo no VS 2017

Atividades
- Atividade1
- Resolução da Atividade

Módulo 9 - Gerenciando : Entidades

1a. ChangeTracker - Conceitos  7:24 minutos
- Gerenciando as entidades do contexto com ChangeTracker
- Cenário Conectado - DbContext  
- Classe ChangeTracker - monitora o estado de cada entidade 
- EntityState : Addedd, Modified, Deleted, Unchanged, Detached
- SaveChanges - INSERT, UPDATE, DELETE

2a.  ChangeTracker - Prática   -  13:31 minutos
- Gerenciando do estado das entidades no contexto
- Monitorando o estado das entidades
- Exibindo o estado das entidades
- Alterando o estado das entidades
- Exemplo no VS 2017
 
3a.  ChangeTracker - Detached  - 5:55 minutos
- Cenário Conectado
- DbContext  usando ChangeTracker
- Estado da entidade : Detached
- O contexto não rastreia entidades detached
- Exemplo no VS 2017

4a. Montando a instrução SQL - 6:25 minutos
- Como o EF Core monta o SQL após o SaveChanges()
- Operações : SELECT, INSERT, DELETE, UPDATE
- Estado das entidades: Unchanged, Added, Deleted e Modified
- Métodos:  Add, Remove
- Exibindo as consultas SQL no console
- Exemplo no VS 2017

5a. Montando a instrução SQL no CRUD -  8:44 minutos
- Como o EF Core monta o SQL após o SaveChanges()
- Incluindo, Alterando e Excluindo entidades e persistindo no BD
- Exibindo os comandos SQL CRUD no console após o SaveChanges
- Exemplo no VS 2017

6a. Mudança de Estado das Entidades  -  2:00 minutos
- Resumo sobre mudança de estado das entidades
- SELECT -  Unchanged
- Alteração - Modified , SaveChanges-Update
- Exclusão - Remove - Deleted , SaveChanges-Delete From - Detached
- Inclusão - Add - Added - SaveChanges - Insert Into

Atividades
- Atividade1
- Resolução da Atividade

Módulo 10 - Consultando Dados

1a. Consultas LINQ - Conceitos - 10:50 minutos
- Consultas baseadas no DbSet do DbContext
- DbSet é uma coleção de entidades - IQueryable 
- Mapeia para a tabela do BD - padrão repositório  
- LINQ -  Query Sintax e Method Sintax - sintaxe usada
- Provedor do BD transcreve consulta LINQ para SQL
- Exemplo no VS 2017

2a. Consultas LINQ Diferidas - Como funcionam -  7:33 minutos
- Consultas LINQ - linguagem C# fortemente tipada
- EF Core processa e cria uma representação pronta para executar
- Armazena o resultado em cache
- Passa o resultado para o provedor do banco de dados
- Converte a consulta LINQ em um comando SQL
- Consultas são executadas apenas quando os dados são consumidos
- Exemplo no VS 2017
 
3a. Consultas LINQ - Retornam um Valor Único  - 6:45 minutos
- Consultas LINQ que retornam um único objeto
- Projeto exemplo usado nas consultas
- Metódos de extensão: Single, SingleOrDefault, Find
- First, FirstOrDefault, Last, LastOrDefault
- Contrapartida dos métodos assíncronos
- Exemplo no VS 2017

4a. Consultas LINQ - Agregação - 9:52 minutos
- Consultas LINQ que usam operadores de agregação
- Atuam nas propriedades numéricas de uma coleção
- Métodos :  Average, Count, Max, Min e Sum
- Exemplo no VS 2017

5a. Consultas LINQ - Retornando múltiplos objetos -  13:41 minutos
- Consultas LINQ - filtrando, ordenando, projetando e agrupando dados
- Filtrando dados usando o operador Where
- Aplicando operadores de agregação  : Count, Sum, Average
- Aplicando mais de uma condição e ordenando com OrderBy, ThenBy
- Projetando um resultado : operador Select e SelectMany
- Agrupando dados com GroupBy

6a. Consultas LINQ com particionamento e Nativas -  17:28 minutos
- Consultas com particionamento :  operadores Skip e Take
- Consultas nativas usando o método DbSet.FromSql(), limitações
- Executando procedimentos armazenados com e sem parâmetros
- Usando o método ExecuteSqlCommand() - stored procedures
- Exemplo no VS 2017

7a. Consultas LINQ - Sem Acompanhamento  -  8:57 minutos
- Consultas em acompanhamento: conceitos e quando usar
- Não precisamos incluir, alterar e excluir dados
- Usar dados apenas para exibição
- Consultas sem acompanhamento são mais rápidas
- Usando o método AsNoTracking
- Alterar comportamento usando: QueryTrackingBehavior.NoTracking
- Exemplo no VS 2017

8a. Consultas Junçao -  8 Aulas - 35 minutos
1a. Aula Conceitos - SQL Joins conceitos - 4:07 minutos
2a. Aula Projeto - Apresentação do projeto - 4:18 minutos
3a. Aula Inner Join - Consultas Inner Join - 6:11 minutos
4a. Aula Left Outer Join - Consultas Left Outer Join - 5:50 minutos
5a. Aula Right Outer Join - Consultas Rigth Outer Join - 2:43 minutos
6a. Aula Full Outer Join - Consultas Full Outer Join - 3:58 minutos
7a. Aula Cross Join - Consultas Cross Join - 4:43 minutos
8a. Aula Group Join - Consultas Group Join - 5:44 minutos

Atividades
- Atividade1
- Resolução da Atividade

Módulo 11 - Entidades Relacionadas

1a. Carregando Entidades Relacionadas - 5:58 minutos
- Carregando entidades relacionados usando propriedades de navegação
- Eager Loading, Explicit Loading e Lazy Loading  
- Exemplo no VS 2017

2a. Entidades Relacionadas - Eager Loading -  9:47 minutos
- Eager Loading - carregamento adiantado
- Usando o método Include para especificar dados relacionados
- Carregando diversos níveis com ThenInclude()
- Exemplo no VS 2017

3a. Entidades Relacionadas - Explicit Loading   - 7:55 minutos
- Carregando explicitamente uma propriedade de navegação
- Usando a API DbCOntext.Entry(entidade).Collection().Load
- Usando a API DbCOntext.Entry(entidade).Reference().Load
- Usando : Collection, Reference e Load
- Propriedade IsLoaded() - verifica entidades carregadas
- Usando consultas LINQ via método Query()
- Exemplo no VS 2017

4a. Entidades Relacionadas - Lazy Loading - 9:07 minutos
- Carregamento sob demanda das entidades relacionadas
- Recurso Lazy Loading suportado no EF Core 2.1
- Habilitando o Lazy Loading
- Instalar o pacote Microsoft.EntityFrameworkCore.Proxies
- Chamar o método UseLazyLoadingProxies em OnConfiguring()
- Definindo as propriedades de navegação virtual
- Exemplo no VS 2017

5a. Entidades Relacionadas - Salvando -  9:53 minutos
- Salvando entidades relacionadas
- Adicionando um gráfico de novas entidades
- Adicionar uma entidade relacionada
- Alterar propriedade de relacionamento
- Exemplo no VS 2017

6a. Entidades Relacionadas - Deletando -  10:22 minutos
- Deletando entidades relacionadas
- Relacionamento obrigatório ou totalmente definido - Delete ou SetNull
- Relacionamento Opcional - NoAction 
- Usando as convenções : definir explicitamente prop. de navegação
- Usando a Fluent API - método IsRequired
- Usando a Fluent API - método OnDelete(DeleteBehavior.valor)
- Exemplo no VS 2017

Atividades
- Atividade1
- Resolução da Atividade

Módulo 12 - Cenário Desconectado

1a. Cenário Desconectado - Conceitos - 5:09 minutos
- O cenário desconectado e como o EF Core atua neste cenário
- Como realizar as operações CRUD no cenário desconectado
- Cenário desconectado - DbSet não conhece entidades desconectadas
- EntityState de uma entidade desconectada: Detached
- Anexando as entidades desconectadas ao contexto
- Definindo o EntityState apropriado
- Invocar o método SaveChanges()

2a. Cenário Desconectado - Incluir entidade -  16:20 minutos
- Inserindo entidades em um cenário desconectado
- Anexar entidade ao DbContext com EntityState Added
- Usar métodos :  Add, AddRange, Attache, Entry
- Invocar o método SaveChanges()
- Exemplo no VS 2017
 
3a. Cenário Desconectado - alterar entidade  - 10:48 minutos
- Alterando entidades em um cenário desconectado
- Anexar entidade ao DbContext com EntityState Modified
- Usar métodos Update e/ou UpdateRange
- Invocar o método SaveChanges()
- Exemplo no VS 2017

4a. Cenário Desconectado - excluir entidade - 7:54 minutos
- Excluindo entidades em um cenário desconectado
- Anexar entidade ao DbContext com EntityState Deleted
- Usar métodos Remove e/ou RemoveRange, Attach ou Entry
- Invocar o método SaveChanges()
- Exemplo no VS 2017

5a. Cenário Desconectado - TrackGraph -  10:08 minutos
- Como rastrear um gráfico de entidades e definindo o EntityState
- Um gráfico de entidades - coleção de entidades
- Método TrackGraph do ChangeTracker : rootEntity e delegate Callback
- Permite rastrear gráfico de entidades e definir seus estados
- Propriedade IsKeySet
- Exemplo no VS 2017

Atividades
- Atividade1
- Resolução da Atividade

Módulo 13 - Concorrência e Transações

1a. Concorrência - Conceitos - 10:03 minutos
- Gerenciando os conflitos de concorência- Conceitos
- Apresentando os controles de concorrência
- Last in wins, concorrência pessimista e concorrência otimista
- Suporte a concorrência otimista 
- Detectando conflitos de concorrência
- Configurar propriedades das entidades como tokens de concorrência
- Adicionar propriedade 'rowversion' para atuar como token
- Data Annotations :  atributo [ConcurrencyCheck] ou [TimeStamp]
- Fluent API - método IsConcurrencyToken() ou IsRowVersion()
- Tratando a exceção :  DbUpdateConcurrencyException()

2a. Concorrência - ConcurrencyCheck -  12:37 minutos
- Tratando conflitos usando entidades com tokens de concorrência
- Fluent API - método IsConcurrencyToken()
- Data Annotations :  atributo [ConcurrencyCheck]
- Tratando a exceção :  DbUpdateConcurrencyException()
- Exemplo no VS 2017
 
3a. Concorrência - IsRowVersion  - 11:25 minutos
- Tratando conflitos usando entidades com tokens de concorrência
- Fluent API - método IsRowVersion()
- Data Annotations :  atributo [TimeStamp]
- Tratando a exceção :  DbUpdateConcurrencyException()
- Exemplo no VS 2017

4a. Transações  - Conceitos - 7:06 minutos
- Por padrão SaveChanges() é transacional
- Controlando transações via código
- Usando DbContext.Database.BeginTransaction
- ou DbContext.Database.UseTransaction
- Commit() e RollBack()
- Tratando a exceção :  DbUpdateConcurrencyException()
- Novos recursos :System.Transactions
- Exemplo no VS 2017

5a. Transações  - BeginTransaction -  8:43 minutos
- Controlando transações usando o método BeginTransaction()
- Inicia e completa uma transação para uma conexão no contexto
- Permite usar várias chamadas de SaveChanges()
- Commit() - Confirma e executa todas as operações pendentes
- RollBack() - desfaz todas as operações pendentes
- Exemplo no VS 2017

5a. Transações  - UseTransaction -  8:59 minutos
- Controlando transações usando o método UseTransaction()
- Compartilhando uma transação com mais de um contexto
- Exemplo no VS 2017

Atividades
- Atividade1
- Resolução da Atividade

Módulo 14 - Novos Recursos do EF Core

1a. Apresentando o projeto -  4:56 minutos
- Apresentando o projeto usado no módulo 14
- Projeto no VS 2017

2a. Consultas Globais -  8:05 minutos
- Filtros de consultas Globais - HasQueryFilter()
- Criar filtros globais por tipo e exclusão reversível
- Usando Fluent API - HasQueryFilter(expressão)
- Desabilitando o filtro com IgnorQueryFilters()
- Exemplo no VS 2017
 
3a. Mapeamento Flexível  - 7:54 minutos
- Mapeamento usando campos ao invés de propriedades
- Usar o backing Field ou campo de apoio para o mapeamento
- Usando o método HasField() para aceitar o campo de apoio
- Exemplo no VS 2017

4a. Mapeamento de Função Escalar - 9:46 minutos
- Permite mapear funções escalares do BD para método
- Criar função escalar no BD
- Declarar método estático na classe de contexto
- Usar atributo [DbFunction]
- Exemplo no VS 2017

5a. Interpolação de strings -  7:07 minutos
- Suporte a strings interpoladas nas APIs
- FromSql() e ExecuteSqlCommand()
- Permite usar o recurso de forma segura
- O EF Core emite a string SQL parametrizada
- Evitando a injeção SQL
- Exemplo no VS 2017

6a. Table Splitting - I  -  8:23 minutos
- Permite usar uma única tabela para mais de uma entidade
- Permite mapear duas ou mais entidades para mesma tabela
- Definir modelo de entidades
- Definir relacionamento um-para-um usando Fluent API
- Mapear entidades para a mesma tabela
- Exemplo no VS 2017

7a. Table Splitting - II  -  6:45 minutos
- Realizando as operações CRUD
- Vantagens em usar o recurso
- Exemplo no VS 2017

8a. Consultas Compiladas -  7:24 minutos
- Permite melhorar o desempenho de consultas
- EF.CompileQuery()
- EF.CompileAsyncQuery()
- Exemplo no VS 2017

Módulo 15 - Usando EF Core na Prática

1a. Acessando o MySQL - 15:56 minutos
- Criando uma aplicação Console para acessar o MySQL
- Usando o MySqlWorkBench e o EF Core
- Usando a ferramenta de linha de comando NET CLI
- Usando o Visual Studio Code
- Instalando o pacote  Pomelo.EntityFrameworkCore.MySql
- Criando o modelo de entidades e a classe de contexto
- Aplicando o Migrations e gerando o BD e a tabela
- Acessando os dados no MySQL

2a. Criando uma aplicação ASP .NET Core MVC -  14:12 minutos
- Criando uma aplicação ASP .NET Core MVC
- Acessando o SQL Server com EF Core
- Usando a abordagem Code-First
- Definindo o modelo de entidades e a classe de contexto
- Aplicando o Migrations
- Gerando os controladores via Scaffolding com EF Core
- Usando o Visual Studio 2017
 
3a. Acessar o PostgreSql com Windows Forms  I - 9:28 minutos
- Criando uma aplicação Windows Forms
- Acessando o PostgreSQL com EF Core
- Usando o PgAdmin 4
- Instalando o pacote  Npgsql.EntityFrameworkCore.PostgreSQL
- Criando o modelo de entidades e a classe de contexto
- Aplicando o Migrations
- Exemplo no VS 2017

3a. Acessar o PostgreSql com Windows Forms  II - 8:13 minutos
- Continuando o projeto para acessar o PostgreSQL
- Definindo os formulários Windows Forms
- Definindo os métodos para realizar as operações CRUD
- Exemplo no VS 2017

5a. Criando uma ASP .NET Core Web API  - 12:59 minutos
- Criando uma aplicação ASP .NET Core Web API
- Web API - Conceitos
- Acessando o SQL Server usando o VS 2017
- Usando a abordagem DbFirst
- Definindo o modelo de entidades e o mapeamento
- Gerando a Web API via Scaffolding usando o EF Core
- Exemplo no VS 2017

 

Curso Entity Framework Core 2.0
R$80,00 R$60,00
Quantidade
Curso Entity Framework Core 2.0 R$60,00

Curso Entity Framework 2.0 

Do básico ao intermediário

95 vídeo aulas em 15 módulos

Com exercícios propostos e resolvidos

Conteúdo e duração de cada Vídeo Aula

Módulo 1 - Fundamentos

1a. Apresentação - 4:58 minutos
- Apresentação do Curso

2a. Introdução -  6:59 minutos
- Apresentação do EF Core

3a. Configurando o Ambiente -  6:48 minutos
- Pacotes necessários
- EF Core Provider
- EF Core Tools
- Provedores de banco de dados
- Instalação dos pacotes : VStudio e Package Manager Console

4a.Abordagens de desenvolvimento - 2:35 minutos
- Abordagem : Code-First e Database-First
- Apresentando Code-First
- Apresentando DB-First
- Vantagens de cada abordagem

5a. DbContext e DbSet -  6:52 minutos
- O Mapeamento ORM: Classes de domínio e BD
- Classes DbContext e DbSet
- Modelo de Entidades e Classe de Contexto
- O papel do DbContext
- O papel do DbSet

Atividade
- Atividade1
- Atividade2
- Resolução das Atividades

Exercício
- Exercício Proposto
- Resolução do Exercício

Módulo 2 - DB-First

1a. Abordagem DB-First : Criando o BD e tabela - 7:08  minutos
- Usando a Abordagem DB-First
- Criando o banco de dados e tabela no SQL Server
- Usando o Object Explorer do VS 2017 Community

2a. Acessando Dados via DB-First -  9:59 minutos
- Criando uma app no VS 2017
- Referenciar os pacotes do EF Core
- Criando a classe de Contexto
- Definir o mapeamento usando o DbSet<T>
- Definir o modelo de  entidades
- Acessando e exibindo dados

3a. DB-First - Scaffolding I - 8:18 minutos
- Gerando as entidades e classe de contexto
- Usando o Scaffold-DbContext
- Definindo a string de conexão e o provedor do BD
- Aplicar o comando Scaffold-DbContext

4a. DB-First - Scaffolding II -  6:37 minutos
- Usando o Scaffold-DbContext com mais de uma tabela
- Usando o banco de dados Northwind.mdf
- Gerando as entidades e classe de Context
- Aplicando o comando Scaffold-DbContext

5a. DB-First - Usando a linha de comando a NET CLI  I - 7:19 minutos
- Usando o .NET Core SDK e o Visual Studio Code
- Usando a ferramenta de linha de comando NET CLI
- Criando um projeto console: dotnet new console
- Instalando os pacotes do EF Core: dotnet add package
- Criando o modelo de entidades e a classe de contexto
- Compilando e Executando o projeto: dotnet build e dotnet run

6a. DB-First - Usando a linha de comando a NET CLI  II -  6:15  minutos
- Usando o .NET Core SDK e o Visual Studio Code
- Usando a ferramenta de linha de comando NET CLI
- Instalando os pacotes do EF Core e das ferramentas
- Gerando o modelo de entidades e a classe de contexto via NET CLI

Atividades
- Atividade1
- Atividade2
- Atividade3
- Resolução das Atividades

Módulo 3 - Code-First

1a. Conceitos - 3:25  minutos
- Apresentando a Abordagem Code-Frist
- Gerando o banco de dados e as tabelas
- Criando o modelo de entidades
- Criando a classe de Contexto
- Definindo o mapeamento DbSet<T>
- Definindo o provedor e a string de conexão
- Aplicando o Migrations : Add-Migrations e Update-Database

2a. Fundamentos do EF Core Migrations - 3:54 minutos
- Apresentando o Migrations
- Add-Migration - gerando o script com comandos SQL
- update-database - aplicando o script e gerando o BD e tabelas
- Os pacotes necessários para usar o MIgrations

3a. Code-First : Criando o BD e tabelas -  9:05 minutos
- Criando o modelo de entidades
- Criando a classe de contexto
- Usando o método OnConfiguring()
- Definindo o provedor do BD e a string de conexão
- Aplicando o migrations
- O Script de migração

4a. Populando o banco de dados Via código -  8:00 minutos
- Populando o banco de dados com dados iniciais
- Opções : via código e via Migrations
- Populando o BD via código : classe SeedDatabase
- Usando o método Add/AddRange e SaveChanges

5a. Populando o banco de dados Via Migrations -  4:33 minutos
- Populando o banco de dados com dados iniciais
- Opções : via código e via Migrations
- Populando o BD via Migrations
- Usando os métodos Up() e Down() do migrations
- Usando o método SQL da instância MigrationBuilder
- Comandos SQL: Insert Into e Delete From

6a. Populando o banco de dados usando HasData -  8:41 minutos
- Populando o banco de dados com dados iniciais
- Populando o BD via método HasData do EF Core 2.1
- Usando o método HasData no método OnModelCreating
- Criando um método de extensão para usar o HasData

7a. Code-First - Usando a linha de comando a NET CLI  I  -  12:58 minutos

- Usando o .NET Core SDK e o VS Code
- Usando a linha de comando NET CLI
- Criando um projeto via NET CLI : dotnet new console
- Instalando os pacotes do EF Core e do provedor do BD
- Criando a entidade e classe de contexto
- Definindo o mapeamento com DbSet<T>
- Aplicando Migrations e criando o BD e a tabela

Atividades
- Atividade1
- Atividade2
- Atividade3
- Resolução das Atividades

Módulo 4 - Tratando-Objetos: CRUD

1a. Incluindo dados  - 9:53 minutos
- Adicionando dados via DbContext
- Usando os métodos Add e AddRange
- Criar a entidade a ser incluida
- Criar uma instância da classe de Contexto
- Incluir a entidade no contexto via métodos Add ou AddRange
- Persistir as informações usando o método SaveChanges() 

2a. Alterando dados -  6:04 minutos
- Alterando dados de entidades existentes via DbContext
- O Cenário Conectado : entidades rastreadas pelo contexto
- Alterando o EntityState como Modified
- Persistir as informações usando o método SaveChanges() 
- O EF Core gera um comando SQL UPDATE para atualizar o BD

-3a. Excluindo Dados - 4:50 minutos
- Deletando entidades existenes via DbContext
- O Cenário Conectado : entidades rastreadas pelo contexto
- Alterando o EntityState como Deleted
- Persistir as informações usando o método SaveChanges() 
- O EF Core gera um comando SQL DELETE para atualizar o BD

4a. Combinando Operações - 8:09 minutos
- Realizando várias operações em um SaveChanges
- O SaveChanges é transacional
- Se alguma operação falar todas as operações falham
- Incluindo, alterando e excluindo entidades em um SaveChanges
- Persistindo as informações com SaveChanges()

Atividades
- Atividade1
- Resolução da Atividade

Módulo 5 - Configuração-Convenções

1a. As convenções de Configuração  I - 10:56 minutos
- Chave Primária
- Schema
- Colunas das tabelas
- Tipos de dados das colunas
- Tabelas

2a.  As convenções de Configuração II -  6:27 minutos
- Nome das Tabelas com base nas entidades relacionadas 
- Exemplo de aplicação da Convenção
- Mapeando entidades sem a propriedade DbSet

3a. As convenções padrão III - Foreign key -  8:14 minutos
- Convenções aplicadas a chave estrangeira - foreign key
- Nome prop. Navegacao+Nome Prop. Chave Primária+Id
- Nome prop. chave primária+Id
- Aplicando as convenções para foreign key

4a. As convenções de Configuração IV -  4:24 minutos
- Convenções adotadas para as colunas das tabelas
- Colunas nulas ou Null
- Tipos dados de referência e tipos primitivos anúláveis
- Colunas não nulas ou Not Null
- Chaves primárias e tipos primitivos : int, float, decimal, DateTime
- Aplicação em exemplo prático

5a. Convenções um-para-um -  6:09  minutos
- Definindo o relacionamento um-para-um
- Propriedade de navegação referenciada ambas entidades
- Incluir prop. que defina a chave estrangeira (opcional)
- Exemplo prático

Atividades
- Atividade1
- Atividade2
- Atividade3
- Resolução das Atividades

Módulo 6 - Configuração : Data Annotation

1a. Sobrescrevendo as Convenções - 8:51 minutos
- Sobrescrevendo as convenções usando a Configuração
- Data Annotations - decorar classes e propriedades com atributos
- Fluent API - usa métodos encadeados aplicados a entidades
- Como funcionam as configurações
- Exemplo prático no VS 2017

2a. Configuração Data Annotations I -  7:20 minutos
- Aplicando atributos Data Annotations
- System.ComponentModel.DataAnnotations
- System.ComponentModel.DataAnnotations.Schema
- Atributos: Table e Column
- Aplicação prática
 
3a. Configuração Data Annotations II -  6:06 minutos
- Aplicando atributos Data Annotations
- Atributos : Key e DatabaseGenerated
- Aplicação prática

4a. Configuração Data Annotations III -  6:16 minutos
- Aplicando atributos Data Annotations
- Atributos : NotMapped , Required (Not Null), MaxLength, StringLength
- Aplicação prática

5a. Configuração Data Annotations III -  9:13 minutos
- Aplicando atributos Data Annotations
- Atributos : ForeignKey
- Opções de configuração para chave estrangeira
- Aplicação prática

Atividade
- Atividade1
- Atividade2
- Resolução das Atividades

Módulo 7 - Configuração : Fluent API

1a. Sobrescrevendo as configurações : Fluent API - 4:10 minutos
- Apresentando a Fluent API
- Configurando Modelo, Entidades e Propriedades
- Como usar a Fluent API
- Usando o método OnModelCreating() e a instância de ModelBuilder
- Aplicando os métodos da Fluent API - chamada encadeada de métodos
- Definir classes de configuração separadas: IEntityTypeConfiguration<T>

2a. Configuração Fluent API I -  5:42 minutos
- Apresentando os métodos do Model
- Métodos: HasDefaultSchema(), Ignore<T>()
- Aplicação prática
- Métodos : HasDbFunction(), HasSequence(), HasAnnotation()
 
3a. Configuração Fluent API II -  5:32 minutos
- Apresentando os métodos a nível de Entidade : ModelBuilder.Entity()
- As versões genéricas e não genéricas
- Métodos : ToTable() e  HasKey()
- Aplicação prática no VS 2017

4a. Configuração Fluent API III -  7:56 minutos
- Apresentando os métodos a nível de Entidade : ModelBuilder.Entity()
- Métodos: HasKey() com chaves compostas, HasIndex() e IsUnique(),
- HasAlternateKey() criando uma chave alternativa
- Aplicação prática no VS 2017

5a. Configuração Fluent API IV -  9:12 minutos
- Apresentando os métodos a nível de Propriedade
- Usando  ModelBuilder.Entity<T>().Property(p=> p.Propriedade)
- Métodos: HasColumnName(), HasColumnType(), HasDefaultValue()
- HasDefaultValueSql(), HasMaxLength(), IsRequired(),
- Aplicação prática no VS 2017

6a. Configuração Fluent API V -  4:55 minutos
- Apresentando os métodos a nível de Propriedade
- Métodos: ValueGeneratedNever(), ValueGeneratedOnAdd()
- ValueGeneratedOnAddOrUpdate(), IsConcurrencyToken()
- Aplicação prática no VS 2017

7a.  Configuração Fluent API VI -  6:47 minutos
- Movendo a configuração para classes separadas
- Classes de configuração : IEntityTypeConfiguration<T>()
- Usando o método Configure() e aplicando o ApplyConfiguration()
- Aplicação prática no VS 2017

Atividades
- Atividade1
- Resolução da Atividade

Módulo 8 - Configuração : Relacionamentos

1a. Relacionamentos - Terminologia e Conceitos - 7:16 minutos
- Modelo de dados, Entidade Principal, Chave Principal,
- Entidade Dependente, Chave Estrangeira, Propriedade de Navegação
- Configurando relacionamentos - Padrão Has/With (Fluent API) 
- Padrão Has/With - HasOne / HasMany e WithOne / WithMany

2a. Relacionamento um-para-um   -  7:33 minutos
- Relacionamento um-para-um usando a Fluent API
- Definindo as propriedades de navegação de referência
- Padrão Has/With - HasOne/WithOne e HasForeignKey
- Aplicando Migrations
- Aplicação prática no VS 2017
 
3a. Relacionamento um-para-muitos  - 8:38 minutos
- Relacionamento um-para-muitos usando a Fluent API
- Definindo as propriedades de navegação de referência e Coleção
- Padrão Has/With - HasMany/WithOne e HasOne/WithMany
- Chave estrangeira: obrigatório e não obrigatória
- Relacionamento opcional, OnDelete(DeleteBehavior.valor)
- Cascade, Restrict e SetNull

4a. Relacionamentos um-para-muitos Prática - 10:27 minutos
- Exemplo no VS 2017
- Relacionamento um-para-muitos usando a Fluent API
- Definindo as propriedades de navegação de referência e Coleção
- Padrão Has/With - HasMany/WithOne e HasOne/WithMany
- Aplicando Migrations

5a. Relacionamentos muitos-para-muitos Conceitos -  7:32 minutos
- Relacionamento muitos-para-muitos usando a Fluent API
- Criando a entidade que representa a tabela de junção
- Definir prop. de navegação e referência de cada entidade
- Definir relacionamento um-para-muitos entre entidades e entidade de junção
- Configurar chave estrangeira na entidade de junção como chave composta
- Aplicar padrão Has/With - HasOne/WithMany e HasForeignKey()

6a. Relacionamentos muitos-para-muitos  -  10:19 minutos
- Relacionamento um-para-muitos usando a Fluent API
- Criando entidade de junção
- Definindo prop. de navegação e referência nas entidades
- Configurando a chave composta via Fluent API
- Aplicando Migrations
- Exemplo no VS 2017

Atividades
- Atividade1
- Resolução da Atividade

Módulo 9 - Gerenciando : Entidades

1a. ChangeTracker - Conceitos  7:24 minutos
- Gerenciando as entidades do contexto com ChangeTracker
- Cenário Conectado - DbContext  
- Classe ChangeTracker - monitora o estado de cada entidade 
- EntityState : Addedd, Modified, Deleted, Unchanged, Detached
- SaveChanges - INSERT, UPDATE, DELETE

2a.  ChangeTracker - Prática   -  13:31 minutos
- Gerenciando do estado das entidades no contexto
- Monitorando o estado das entidades
- Exibindo o estado das entidades
- Alterando o estado das entidades
- Exemplo no VS 2017
 
3a.  ChangeTracker - Detached  - 5:55 minutos
- Cenário Conectado
- DbContext  usando ChangeTracker
- Estado da entidade : Detached
- O contexto não rastreia entidades detached
- Exemplo no VS 2017

4a. Montando a instrução SQL - 6:25 minutos
- Como o EF Core monta o SQL após o SaveChanges()
- Operações : SELECT, INSERT, DELETE, UPDATE
- Estado das entidades: Unchanged, Added, Deleted e Modified
- Métodos:  Add, Remove
- Exibindo as consultas SQL no console
- Exemplo no VS 2017

5a. Montando a instrução SQL no CRUD -  8:44 minutos
- Como o EF Core monta o SQL após o SaveChanges()
- Incluindo, Alterando e Excluindo entidades e persistindo no BD
- Exibindo os comandos SQL CRUD no console após o SaveChanges
- Exemplo no VS 2017

6a. Mudança de Estado das Entidades  -  2:00 minutos
- Resumo sobre mudança de estado das entidades
- SELECT -  Unchanged
- Alteração - Modified , SaveChanges-Update
- Exclusão - Remove - Deleted , SaveChanges-Delete From - Detached
- Inclusão - Add - Added - SaveChanges - Insert Into

Atividades
- Atividade1
- Resolução da Atividade

Módulo 10 - Consultando Dados

1a. Consultas LINQ - Conceitos - 10:50 minutos
- Consultas baseadas no DbSet do DbContext
- DbSet é uma coleção de entidades - IQueryable 
- Mapeia para a tabela do BD - padrão repositório  
- LINQ -  Query Sintax e Method Sintax - sintaxe usada
- Provedor do BD transcreve consulta LINQ para SQL
- Exemplo no VS 2017

2a. Consultas LINQ Diferidas - Como funcionam -  7:33 minutos
- Consultas LINQ - linguagem C# fortemente tipada
- EF Core processa e cria uma representação pronta para executar
- Armazena o resultado em cache
- Passa o resultado para o provedor do banco de dados
- Converte a consulta LINQ em um comando SQL
- Consultas são executadas apenas quando os dados são consumidos
- Exemplo no VS 2017
 
3a. Consultas LINQ - Retornam um Valor Único  - 6:45 minutos
- Consultas LINQ que retornam um único objeto
- Projeto exemplo usado nas consultas
- Metódos de extensão: Single, SingleOrDefault, Find
- First, FirstOrDefault, Last, LastOrDefault
- Contrapartida dos métodos assíncronos
- Exemplo no VS 2017

4a. Consultas LINQ - Agregação - 9:52 minutos
- Consultas LINQ que usam operadores de agregação
- Atuam nas propriedades numéricas de uma coleção
- Métodos :  Average, Count, Max, Min e Sum
- Exemplo no VS 2017

5a. Consultas LINQ - Retornando múltiplos objetos -  13:41 minutos
- Consultas LINQ - filtrando, ordenando, projetando e agrupando dados
- Filtrando dados usando o operador Where
- Aplicando operadores de agregação  : Count, Sum, Average
- Aplicando mais de uma condição e ordenando com OrderBy, ThenBy
- Projetando um resultado : operador Select e SelectMany
- Agrupando dados com GroupBy

6a. Consultas LINQ com particionamento e Nativas -  17:28 minutos
- Consultas com particionamento :  operadores Skip e Take
- Consultas nativas usando o método DbSet.FromSql(), limitações
- Executando procedimentos armazenados com e sem parâmetros
- Usando o método ExecuteSqlCommand() - stored procedures
- Exemplo no VS 2017

7a. Consultas LINQ - Sem Acompanhamento  -  8:57 minutos
- Consultas em acompanhamento: conceitos e quando usar
- Não precisamos incluir, alterar e excluir dados
- Usar dados apenas para exibição
- Consultas sem acompanhamento são mais rápidas
- Usando o método AsNoTracking
- Alterar comportamento usando: QueryTrackingBehavior.NoTracking
- Exemplo no VS 2017

8a. Consultas Junçao -  8 Aulas - 35 minutos
1a. Aula Conceitos - SQL Joins conceitos - 4:07 minutos
2a. Aula Projeto - Apresentação do projeto - 4:18 minutos
3a. Aula Inner Join - Consultas Inner Join - 6:11 minutos
4a. Aula Left Outer Join - Consultas Left Outer Join - 5:50 minutos
5a. Aula Right Outer Join - Consultas Rigth Outer Join - 2:43 minutos
6a. Aula Full Outer Join - Consultas Full Outer Join - 3:58 minutos
7a. Aula Cross Join - Consultas Cross Join - 4:43 minutos
8a. Aula Group Join - Consultas Group Join - 5:44 minutos

Atividades
- Atividade1
- Resolução da Atividade

Módulo 11 - Entidades Relacionadas

1a. Carregando Entidades Relacionadas - 5:58 minutos
- Carregando entidades relacionados usando propriedades de navegação
- Eager Loading, Explicit Loading e Lazy Loading  
- Exemplo no VS 2017

2a. Entidades Relacionadas - Eager Loading -  9:47 minutos
- Eager Loading - carregamento adiantado
- Usando o método Include para especificar dados relacionados
- Carregando diversos níveis com ThenInclude()
- Exemplo no VS 2017

3a. Entidades Relacionadas - Explicit Loading   - 7:55 minutos
- Carregando explicitamente uma propriedade de navegação
- Usando a API DbCOntext.Entry(entidade).Collection().Load
- Usando a API DbCOntext.Entry(entidade).Reference().Load
- Usando : Collection, Reference e Load
- Propriedade IsLoaded() - verifica entidades carregadas
- Usando consultas LINQ via método Query()
- Exemplo no VS 2017

4a. Entidades Relacionadas - Lazy Loading - 9:07 minutos
- Carregamento sob demanda das entidades relacionadas
- Recurso Lazy Loading suportado no EF Core 2.1
- Habilitando o Lazy Loading
- Instalar o pacote Microsoft.EntityFrameworkCore.Proxies
- Chamar o método UseLazyLoadingProxies em OnConfiguring()
- Definindo as propriedades de navegação virtual
- Exemplo no VS 2017

5a. Entidades Relacionadas - Salvando -  9:53 minutos
- Salvando entidades relacionadas
- Adicionando um gráfico de novas entidades
- Adicionar uma entidade relacionada
- Alterar propriedade de relacionamento
- Exemplo no VS 2017

6a. Entidades Relacionadas - Deletando -  10:22 minutos
- Deletando entidades relacionadas
- Relacionamento obrigatório ou totalmente definido - Delete ou SetNull
- Relacionamento Opcional - NoAction 
- Usando as convenções : definir explicitamente prop. de navegação
- Usando a Fluent API - método IsRequired
- Usando a Fluent API - método OnDelete(DeleteBehavior.valor)
- Exemplo no VS 2017

Atividades
- Atividade1
- Resolução da Atividade

Módulo 12 - Cenário Desconectado

1a. Cenário Desconectado - Conceitos - 5:09 minutos
- O cenário desconectado e como o EF Core atua neste cenário
- Como realizar as operações CRUD no cenário desconectado
- Cenário desconectado - DbSet não conhece entidades desconectadas
- EntityState de uma entidade desconectada: Detached
- Anexando as entidades desconectadas ao contexto
- Definindo o EntityState apropriado
- Invocar o método SaveChanges()

2a. Cenário Desconectado - Incluir entidade -  16:20 minutos
- Inserindo entidades em um cenário desconectado
- Anexar entidade ao DbContext com EntityState Added
- Usar métodos :  Add, AddRange, Attache, Entry
- Invocar o método SaveChanges()
- Exemplo no VS 2017
 
3a. Cenário Desconectado - alterar entidade  - 10:48 minutos
- Alterando entidades em um cenário desconectado
- Anexar entidade ao DbContext com EntityState Modified
- Usar métodos Update e/ou UpdateRange
- Invocar o método SaveChanges()
- Exemplo no VS 2017

4a. Cenário Desconectado - excluir entidade - 7:54 minutos
- Excluindo entidades em um cenário desconectado
- Anexar entidade ao DbContext com EntityState Deleted
- Usar métodos Remove e/ou RemoveRange, Attach ou Entry
- Invocar o método SaveChanges()
- Exemplo no VS 2017

5a. Cenário Desconectado - TrackGraph -  10:08 minutos
- Como rastrear um gráfico de entidades e definindo o EntityState
- Um gráfico de entidades - coleção de entidades
- Método TrackGraph do ChangeTracker : rootEntity e delegate Callback
- Permite rastrear gráfico de entidades e definir seus estados
- Propriedade IsKeySet
- Exemplo no VS 2017

Atividades
- Atividade1
- Resolução da Atividade

Módulo 13 - Concorrência e Transações

1a. Concorrência - Conceitos - 10:03 minutos
- Gerenciando os conflitos de concorência- Conceitos
- Apresentando os controles de concorrência
- Last in wins, concorrência pessimista e concorrência otimista
- Suporte a concorrência otimista 
- Detectando conflitos de concorrência
- Configurar propriedades das entidades como tokens de concorrência
- Adicionar propriedade 'rowversion' para atuar como token
- Data Annotations :  atributo [ConcurrencyCheck] ou [TimeStamp]
- Fluent API - método IsConcurrencyToken() ou IsRowVersion()
- Tratando a exceção :  DbUpdateConcurrencyException()

2a. Concorrência - ConcurrencyCheck -  12:37 minutos
- Tratando conflitos usando entidades com tokens de concorrência
- Fluent API - método IsConcurrencyToken()
- Data Annotations :  atributo [ConcurrencyCheck]
- Tratando a exceção :  DbUpdateConcurrencyException()
- Exemplo no VS 2017
 
3a. Concorrência - IsRowVersion  - 11:25 minutos
- Tratando conflitos usando entidades com tokens de concorrência
- Fluent API - método IsRowVersion()
- Data Annotations :  atributo [TimeStamp]
- Tratando a exceção :  DbUpdateConcurrencyException()
- Exemplo no VS 2017

4a. Transações  - Conceitos - 7:06 minutos
- Por padrão SaveChanges() é transacional
- Controlando transações via código
- Usando DbContext.Database.BeginTransaction
- ou DbContext.Database.UseTransaction
- Commit() e RollBack()
- Tratando a exceção :  DbUpdateConcurrencyException()
- Novos recursos :System.Transactions
- Exemplo no VS 2017

5a. Transações  - BeginTransaction -  8:43 minutos
- Controlando transações usando o método BeginTransaction()
- Inicia e completa uma transação para uma conexão no contexto
- Permite usar várias chamadas de SaveChanges()
- Commit() - Confirma e executa todas as operações pendentes
- RollBack() - desfaz todas as operações pendentes
- Exemplo no VS 2017

5a. Transações  - UseTransaction -  8:59 minutos
- Controlando transações usando o método UseTransaction()
- Compartilhando uma transação com mais de um contexto
- Exemplo no VS 2017

Atividades
- Atividade1
- Resolução da Atividade

Módulo 14 - Novos Recursos do EF Core

1a. Apresentando o projeto -  4:56 minutos
- Apresentando o projeto usado no módulo 14
- Projeto no VS 2017

2a. Consultas Globais -  8:05 minutos
- Filtros de consultas Globais - HasQueryFilter()
- Criar filtros globais por tipo e exclusão reversível
- Usando Fluent API - HasQueryFilter(expressão)
- Desabilitando o filtro com IgnorQueryFilters()
- Exemplo no VS 2017
 
3a. Mapeamento Flexível  - 7:54 minutos
- Mapeamento usando campos ao invés de propriedades
- Usar o backing Field ou campo de apoio para o mapeamento
- Usando o método HasField() para aceitar o campo de apoio
- Exemplo no VS 2017

4a. Mapeamento de Função Escalar - 9:46 minutos
- Permite mapear funções escalares do BD para método
- Criar função escalar no BD
- Declarar método estático na classe de contexto
- Usar atributo [DbFunction]
- Exemplo no VS 2017

5a. Interpolação de strings -  7:07 minutos
- Suporte a strings interpoladas nas APIs
- FromSql() e ExecuteSqlCommand()
- Permite usar o recurso de forma segura
- O EF Core emite a string SQL parametrizada
- Evitando a injeção SQL
- Exemplo no VS 2017

6a. Table Splitting - I  -  8:23 minutos
- Permite usar uma única tabela para mais de uma entidade
- Permite mapear duas ou mais entidades para mesma tabela
- Definir modelo de entidades
- Definir relacionamento um-para-um usando Fluent API
- Mapear entidades para a mesma tabela
- Exemplo no VS 2017

7a. Table Splitting - II  -  6:45 minutos
- Realizando as operações CRUD
- Vantagens em usar o recurso
- Exemplo no VS 2017

8a. Consultas Compiladas -  7:24 minutos
- Permite melhorar o desempenho de consultas
- EF.CompileQuery()
- EF.CompileAsyncQuery()
- Exemplo no VS 2017

Módulo 15 - Usando EF Core na Prática

1a. Acessando o MySQL - 15:56 minutos
- Criando uma aplicação Console para acessar o MySQL
- Usando o MySqlWorkBench e o EF Core
- Usando a ferramenta de linha de comando NET CLI
- Usando o Visual Studio Code
- Instalando o pacote  Pomelo.EntityFrameworkCore.MySql
- Criando o modelo de entidades e a classe de contexto
- Aplicando o Migrations e gerando o BD e a tabela
- Acessando os dados no MySQL

2a. Criando uma aplicação ASP .NET Core MVC -  14:12 minutos
- Criando uma aplicação ASP .NET Core MVC
- Acessando o SQL Server com EF Core
- Usando a abordagem Code-First
- Definindo o modelo de entidades e a classe de contexto
- Aplicando o Migrations
- Gerando os controladores via Scaffolding com EF Core
- Usando o Visual Studio 2017
 
3a. Acessar o PostgreSql com Windows Forms  I - 9:28 minutos
- Criando uma aplicação Windows Forms
- Acessando o PostgreSQL com EF Core
- Usando o PgAdmin 4
- Instalando o pacote  Npgsql.EntityFrameworkCore.PostgreSQL
- Criando o modelo de entidades e a classe de contexto
- Aplicando o Migrations
- Exemplo no VS 2017

3a. Acessar o PostgreSql com Windows Forms  II - 8:13 minutos
- Continuando o projeto para acessar o PostgreSQL
- Definindo os formulários Windows Forms
- Definindo os métodos para realizar as operações CRUD
- Exemplo no VS 2017

5a. Criando uma ASP .NET Core Web API  - 12:59 minutos
- Criando uma aplicação ASP .NET Core Web API
- Web API - Conceitos
- Acessando o SQL Server usando o VS 2017
- Usando a abordagem DbFirst
- Definindo o modelo de entidades e o mapeamento
- Gerando a Web API via Scaffolding usando o EF Core
- Exemplo no VS 2017