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 (MVP Visual C#) 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 First personalizadas (Demonstração 1)

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

♦Mapeamento Code First de stored procedures (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

Bancoexistent

e

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