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
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
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)
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
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)
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
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 …
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
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
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
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
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
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
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
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
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
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
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
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
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