Entity Framework 6 [MVP ShowCast 2013 - DEV - Plataforma de dados & Business Intelligence (DEV)]

20
SESSÃO: DESENVOLVIMENTO TRILHA: PLATAFORMA DE DADOS & BUSINESS INTELLIGENCE (DEV) © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft. MVP ShowCast 2013 Entity Framework 6 Rogério Moraes de Carvalho Visual C# Diretor de Tecnologia – VITA Informática @ rogeriomc rogeriomc.wordpress.com

description

Palestra: Entity Framework 6 Palestrante: Rogério Moraes de Carvalho Realização: 06/12/2013 17h Trilha: Plataforma de dados & Business Intelligence (DEV) Sessão: Desenvolvimento Evento: MVP ShowCast 2013 Site: http://mvpshowcast.azurewebsites.net

Transcript of Entity Framework 6 [MVP ShowCast 2013 - DEV - Plataforma de dados & Business Intelligence (DEV)]

Page 1: Entity Framework 6 [MVP ShowCast 2013 - DEV - Plataforma de dados & Business Intelligence (DEV)]

SESSÃO: DESENVOLVIMENTO TRILHA: PLATAFORMA DE DADOS & BUSINESS INTELLIGENCE (DEV)

© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.

MVP ShowCast 2013

Entity Framework 6

Rogério Moraes de Carvalho

Visual C#

Diretor de Tecnologia – VITA Informática

@rogeriomc rogeriomc.wordpress.com

Page 2: Entity Framework 6 [MVP ShowCast 2013 - DEV - Plataforma de dados & Business Intelligence (DEV)]

SESSÃO: DESENVOLVIMENTO TRILHA: PLATAFORMA DE DADOS & BUSINESS INTELLIGENCE (DEV)

© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.

Agenda

♦Object-Relational Mapping (ORM)

♦Entity Framework

♦Código aberto

♦Modelos de desenvolvimento

♦Entity Framework e LINQ para Entidades

♦Novidades do Entity Framework 6

♦ Instalação do Entity Framework 6

♦Convenções Code Firstpersonalizadas (Demonstração 1)

♦Logging de comandos de banco de dados (Demonstração 2)

♦ Mapeamento Code First de storedprocedures (Demonstração 3)

♦ Consulta e salvamento assíncrono (Demonstração 4)

♦ Alguns recursos para estudo doEntity Framework

♦Perguntas & Respostas

Page 3: Entity Framework 6 [MVP ShowCast 2013 - DEV - Plataforma de dados & Business Intelligence (DEV)]

SESSÃO: DESENVOLVIMENTO TRILHA: PLATAFORMA DE DADOS & BUSINESS INTELLIGENCE (DEV)

© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.

Object-Relational Mapping (ORM)

♦O que é Object-Relational Mapping (ORM)?♦ Técnica de desenvolvimento que permite automatizar tarefas de POO com

dados armazenados em bancos de dados relacionais

♦ Frameworks mapeiam objetos de domínio a objetos de banco de dados e geram comandos em SQL

♦Principais frameworks de ORM para .NET♦ Entity Framework (Open Source – Microsoft)

♦ (Open Source – http://nhforge.org)

Page 4: Entity Framework 6 [MVP ShowCast 2013 - DEV - Plataforma de dados & Business Intelligence (DEV)]

SESSÃO: DESENVOLVIMENTO TRILHA: PLATAFORMA DE DADOS & BUSINESS INTELLIGENCE (DEV)

© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.

Entity Framework

♦O que é o Entity Framework (EF)?♦ Framework da Microsoft para mapear objetos de domínio para dados

relacionais

♦Versão estável atual♦ Entity Framework 6.0.1

♦ Liberada em 18 de outubro de 2013

♦ Junto com o Visual Studio 2013 RTM e o Windows 8.1 GA

♦Desenvolvimento do Entity Framework♦ Time do Entity Framework da Microsoft em colaboração com a comunidade

de desenvolvedores open source

Page 5: Entity Framework 6 [MVP ShowCast 2013 - DEV - Plataforma de dados & Business Intelligence (DEV)]

SESSÃO: DESENVOLVIMENTO TRILHA: PLATAFORMA DE DADOS & BUSINESS INTELLIGENCE (DEV)

© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.

Código aberto

♦Entity Framework no CodePlex♦ http://entityframework.codeplex.com

♦Diversos recursos disponíveis♦ Código-fonte (Source code)

♦ Compilações noturnas (Nightly builds)

♦ Documentação (Documentation)

♦ Especificações de características (Feature specs)

♦ Acompanhamento de problemas (Issue tracking)

♦ Notas de reuniões de design (Design meeting notes)

Page 6: Entity Framework 6 [MVP ShowCast 2013 - DEV - Plataforma de dados & Business Intelligence (DEV)]

SESSÃO: DESENVOLVIMENTO TRILHA: PLATAFORMA DE DADOS & BUSINESS INTELLIGENCE (DEV)

© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.

Modelos de desenvolvimento

Novobanco

Bancoexistente

Database First♦ Engenharia reversa para o modelo .edmx

♦ Geração automática de classes do .edmx

Model First♦ Criação do modelo .edmx no designer

♦ Geração do banco de dados do .edmx

♦ Geração automática de classes do .edmx

Code First♦ Definição de classes e mapeamento no código

(ferramentas de engenharia reversa disponíveis)

Code First♦ Definição de classes e mapeamento no código

♦ Criação do banco de dados do código

♦ Migrations aplica mudanças do modelo no banco

Baseado no designer Baseado em codificação

Page 7: Entity Framework 6 [MVP ShowCast 2013 - DEV - Plataforma de dados & Business Intelligence (DEV)]

SESSÃO: DESENVOLVIMENTO TRILHA: PLATAFORMA DE DADOS & BUSINESS INTELLIGENCE (DEV)

© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.

Entity Framework eLINQ para Entidades

Aplicação

Banco de dados

Entity Framework

from f in db.Fornecedoreswhere f.UF == "DF"select f

Consulta LINQdb: instância de DbContext

Consulta SQL

SELECT Id, NomeEmpresa, ...FROM FornecedoresWHERE UF = 'DF'

Registros

Entidades db.SaveChanges()

DML ou Stored Procedures

db.Fornecedores.Add(f1);f2.UF = "SP";db.Fornecedores.Remove(f3);

INSERT INTO Fornecedores …UPDATE Fornecedores …DELETE FROM Fornecedores …

Page 8: Entity Framework 6 [MVP ShowCast 2013 - DEV - Plataforma de dados & Business Intelligence (DEV)]

SESSÃO: DESENVOLVIMENTO TRILHA: PLATAFORMA DE DADOS & BUSINESS INTELLIGENCE (DEV)

© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.

Code First & EF Designer♦ Consulta e salvamento assíncrono

♦ Resiliência de conexão

♦ Configuração baseada em código

♦ Intercepção/Logging de comandos de banco de dados

♦ Melhorias de desempenho

Somente Code First♦ Convenções personalizadas

♦ Stored procedures de inclusão, atualização e exclusão

Novidades do Entity Framework 6EF6

NOVO

Page 9: Entity Framework 6 [MVP ShowCast 2013 - DEV - Plataforma de dados & Business Intelligence (DEV)]

SESSÃO: DESENVOLVIMENTO TRILHA: PLATAFORMA DE DADOS & BUSINESS INTELLIGENCE (DEV)

© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.

Do time do EF na Microsoft♦ Tipos entidades aninhados

♦ Suporte melhorado a transações

♦ Múltiplos contextos por banco

♦ DbModelBuilder.HasDefaultSchema

♦ Histórico de migrações configurável

♦ Criação de contexto com uma conexão aberta

♦ Enums e tipos espaciais no .NET 4

♦ READ_COMMITTED_SNAPSHOT

Dos contribuidores♦ Operações de migração

personalizadas

♦ Melhorias de carregamento para grandes modelos

♦ Serviço de pluralização e singularização possível de plugar

♦ DbModelBuilder.Configurations.AddFromAssembly

♦ DbSet.AddRange/RemoveRange

Novidades do Entity Framework 6EF6

NOVO

Page 10: Entity Framework 6 [MVP ShowCast 2013 - DEV - Plataforma de dados & Business Intelligence (DEV)]

SESSÃO: DESENVOLVIMENTO TRILHA: PLATAFORMA DE DADOS & BUSINESS INTELLIGENCE (DEV)

© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.

Instalação do Entity Framework 6

♦O Entity Framework tem dois componentes:♦ EF Tools for Visual Studio

♦ EF Runtime

♦EF Tools for Visual Studio♦ O Entity Framework 6 Tools já vem incluído no Visual Studio 2013

♦ No Visual Studio 2012, ele está disponível no Microsoft Download Center♦ http://www.microsoft.com/en-us/download/details.aspx?id=40762

♦EF Runtime♦ A última versão do EF está disponível no pacote NuGet EntityFramework

♦ Última versão estável do pacote publicada: 6.0.1 (17/10/2013)

EF6

NOVO

Page 11: Entity Framework 6 [MVP ShowCast 2013 - DEV - Plataforma de dados & Business Intelligence (DEV)]

SESSÃO: DESENVOLVIMENTO TRILHA: PLATAFORMA DE DADOS & BUSINESS INTELLIGENCE (DEV)

© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.

Convenções Code First personalizadas

♦Descrição♦ Configurações em massa para múltiplas entidades e propriedades

♦Necessidade♦ Evitar configurações repetitivas e sujeitas a erro

♦Casos de uso♦ Padrões no seu modelo que não seguem as convenções Code First

♦ Como em nomenclaturas de chaves primárias

♦ Mudança de convenções padrão que não te agradam♦ Como nomenclatura de colunas e mapeamento de tipos de dados

EF6

NOVO

Page 12: Entity Framework 6 [MVP ShowCast 2013 - DEV - Plataforma de dados & Business Intelligence (DEV)]

SESSÃO: DESENVOLVIMENTO TRILHA: PLATAFORMA DE DADOS & BUSINESS INTELLIGENCE (DEV)

© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.

Demonstração 1:Convenções Code First personalizadas

♦Criação de uma Class Library♦ MvpShowCast.Dados

♦ Criação de entidades

♦ Trilha

♦ IdTrilha: int

♦ Nome: string

♦ Palestras: List<Palestra>

♦ Palestrante

♦ IdPalestrante: int

♦ Nome: string

♦ Empresa: string

♦ Ocupacao: string

♦ Palestras: List<Palestra>

♦ Palestra

♦ IdPalestra: int

♦ Titulo: string

♦ Inicio: DateTime

♦ IdTrilha: int

♦ Trilha: Trilha

♦ IdPalestrante: int

♦ Palestrante: Palestrante

♦ Criação do MvpShowCastContext

♦ Criação de convenções personalizadas

♦Criação de uma Aplicação Console♦ MvpShowCast.ConsoleApp

♦ Para consulta e salvamento de dados

EF6

NOVO

Page 13: Entity Framework 6 [MVP ShowCast 2013 - DEV - Plataforma de dados & Business Intelligence (DEV)]

SESSÃO: DESENVOLVIMENTO TRILHA: PLATAFORMA DE DADOS & BUSINESS INTELLIGENCE (DEV)

© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.

Logging de comandos debanco de dados

♦Descrição♦ Log de todo comando enviado para o banco de dados

♦Necessidade♦ Maneira simples de verificar o que está acontecendo nos bastidores

♦Casos de uso♦ Entendimento e aprendizado do Entity Framework

♦ Como a tradução de instruções LINQ para o dialeto SQL do banco de dados

♦ Depuração de resultados e comportamentos inesperados

♦ Auxiliar na solução de problemas de desempenho

EF6

NOVO

Page 14: Entity Framework 6 [MVP ShowCast 2013 - DEV - Plataforma de dados & Business Intelligence (DEV)]

SESSÃO: DESENVOLVIMENTO TRILHA: PLATAFORMA DE DADOS & BUSINESS INTELLIGENCE (DEV)

© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.

Demonstração 2: Logging de comandos de banco de dados

♦DbContext.Database.Log: Action<string>

EF6

NOVO

Page 15: Entity Framework 6 [MVP ShowCast 2013 - DEV - Plataforma de dados & Business Intelligence (DEV)]

SESSÃO: DESENVOLVIMENTO TRILHA: PLATAFORMA DE DADOS & BUSINESS INTELLIGENCE (DEV)

© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.

Mapeamento Code First destored procedures

♦Descrição♦ Configuração de stored procedures para inclusão, atualização e exclusão

♦Necessidade♦ Muitas empresas obrigam o uso de stored procedures

♦Casos de uso♦ Mapeamento para bancos de dados existentes que usam stored procedures

♦ Regras de modelagem que obrigam o uso de stored procedures

♦ Necessidade de executar regras de negócios com melhor desempenho dentro do banco de dados

♦ O EF não pode mapear para o esquema do seu banco de dados

EF6

NOVO

Page 16: Entity Framework 6 [MVP ShowCast 2013 - DEV - Plataforma de dados & Business Intelligence (DEV)]

SESSÃO: DESENVOLVIMENTO TRILHA: PLATAFORMA DE DADOS & BUSINESS INTELLIGENCE (DEV)

© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.

Demonstração 3: MapeamentoCode First de stored procedures

♦API Fluente do Code First♦ modelBuilder.Entity<TEntidade>().MapToStoreProcedures()

EF6

NOVO

Page 17: Entity Framework 6 [MVP ShowCast 2013 - DEV - Plataforma de dados & Business Intelligence (DEV)]

SESSÃO: DESENVOLVIMENTO TRILHA: PLATAFORMA DE DADOS & BUSINESS INTELLIGENCE (DEV)

© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.

Consulta e salvamento assíncrono

♦Descrição♦ Task-based Asynchronous Pattern (TAP) para consulta e salvamento

♦Necessidade♦ Apropriado para melhorar o desempenho e a escalabilidade

♦Casos de uso♦ Redução no uso de recursos do servidor

♦ Liberação de threads bloqueadas

♦ Melhoria na resposta de aplicações com interface gráfica♦ Liberação da thread principal, responsável pela “renderização” da interface gráfica

♦ Paralelismo♦ Num contexto de instância distinto

EF6

NOVO

Page 18: Entity Framework 6 [MVP ShowCast 2013 - DEV - Plataforma de dados & Business Intelligence (DEV)]

SESSÃO: DESENVOLVIMENTO TRILHA: PLATAFORMA DE DADOS & BUSINESS INTELLIGENCE (DEV)

© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.

Demonstração 4:Consulta e salvamento assíncrono

♦DbContext.SaveChangesAsync()

♦Método de extensão ToListAsync()

EF6

NOVO

Page 19: Entity Framework 6 [MVP ShowCast 2013 - DEV - Plataforma de dados & Business Intelligence (DEV)]

SESSÃO: DESENVOLVIMENTO TRILHA: PLATAFORMA DE DADOS & BUSINESS INTELLIGENCE (DEV)

© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.

Alguns recursos para estudo doEntity Framework

♦MSDN Data Developer Center – Entity Framework♦ http://msdn.com/data/ef

♦Projeto do Entity Framework no CodePlex♦ http://entityframework.codeplex.com

♦Rowan Miller – Program Manager do time de ADO.NET Entity Framework♦ http://romiller.com

♦Livros da Julia Lerman♦ Programming Entity Framework: Code First

♦ http://shop.oreilly.com/product/0636920022220.do

♦ Programming Entity Framework: DbContext

♦ http://shop.oreilly.com/product/0636920022237.do

Page 20: Entity Framework 6 [MVP ShowCast 2013 - DEV - Plataforma de dados & Business Intelligence (DEV)]

SESSÃO: DESENVOLVIMENTO TRILHA: PLATAFORMA DE DADOS & BUSINESS INTELLIGENCE (DEV)

© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.

Perguntas & RespostasEntity Framework 6

Rogério Moraes de Carvalho

Visual C#

Diretor de Tecnologia – VITA Informática

@rogeriomc rogeriomc.wordpress.com