Introdução ao Entity Framework 4

Slides:



Advertisements
Apresentações semelhantes
Java Avançado Luiz Carlos d´Oleron SJCP Hibernate II.
Advertisements

I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Estudo de Caso, modelo Oracle 10g
Aula 3 – DB2 Express-C Autor:
Curso: Banco de Dados I Análise de Sistemas PUC Campinas
ASP.NET e ADO.NET.
Tecnologia de Programação BD em.Net: Conexão com SQL Server 1º Semestre 2009 > PUCPR > BSI Bruno C. de Paula.
BD em.NET: Passo a passo conexão com SQL Server 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.
Projeto 1.
Maurício Edgar Stivanello
Sistema Gerenciador de Banco de Dados SGBD
Sistema Gerenciador de Banco de Dados SGBD
1 MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE) BREVE HISTÓRICO CARACTERÍSTICAS CONCEITOS DE PROGRAMAÇÃO ORIENTADA A OBJETOS MODELAGEM DE ANÁLISE E DE.
Ferramentas CASE ERwin
Hibernate Apresentação
Java Persistence API (JPA) Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Grupo 5: Fernando Lourenço Pinho Costa Rafael de Souza Santos
Mapeamento Objeto-Relacional Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Banco de dados Profª Kelly Medeiros.
Mapeamento de Objetos para Tabelas Relacionais
Introdução ao C# e ao visual studio
DOCUMENTO CONFIDENCIAL DA MICROSOFT Set 2009 | Página 1 | Apresentação para BDMs.
SQL Server 2012 Introdução a Modelagem de Dados
Equipe de monitoria Aula prática 4.  Tipos  Tabela de Objetos  Herança  Métodos  Referências  Coleções  Composição de coleções  Conectividade.
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Rodrigo Cristiano Silva
Tecnologias Web ADO.NET
XIV Jornada de Cursos .NET com C# Antônio Carlos Bruno Inojosa.
Framework gpnet.
SQL Server 2012 Tipos de Dados e Tabelas
Linguagem Técnica de Programação VI Prof.: Luiz Gustavo Jordão Soares.
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Integração com Banco de Dados
Hibernate: Consultas Francisco do Nascimento
Design Patterns / Acesso ao banco de dados (java.sql)
Especialização em Tecnologia da Informação
Introdução ao Hibernate
Hibernate Java avançado – PCC Jobson Ronan
Hibernate Java avançado – PCC Jobson Ronan
1.
Conhecendo o Entity Framework 4.1
III – O Modelo OR Estudo de Caso, modelo Oracle 10g.
Desenvolvendo um script SQL
Rafael Lucio, Desenvolvedor Jr Padrão Informática e Assessor de TI Secretaria Municipal da Saúde;
Programação Orientada à Objetos
Arquitetura de Desenvolvimento Web MVC vs. Three Tiers
Banco de Dados Aplicado ao Desenvolvimento de Software
Campus de Caraguatatuba Aula 2: Introdução a Tecnologia de BD
Projeto de Sistemas de Informação Prof. Schneider Oracle Object-Relational.
Padrões de Interação com o Usuário
Triggers (Gatilhos) Professor Esp. Diego André Sant’Ana
Persistência e mapeamento objeto relacional
Ricardo Ferreira Schiavo
Linguagem de programação. Histórico  Concebida em 1993 por Yukihiro Matsumoto  Primeiro livro em inglês saiu em setembro de 2000  Ruby on Rails é lançado.
Bruno Inojosa MCP.NET Framework.NET com C#. SQL Básico.
III - Oracle9i Apontadores – Tipo de Dado (REF). Identificador de Objeto A todo objeto de uma “object table” é associado um OID (“Object IDentifier”)
Equipe de monitoria Aula prática 4.  Tipos  Tabela de Objetos  Herança  Métodos  Referências  Coleções  Composição de coleções  Conectividade.
LINQ e Entity Framework
Objetos em Bancos de Dados Relacionais Alcides Calsavara.
Leo Silva Leonardo Murta Luiz Viana Persistência em Java.
Persistência em Software Orientado a Objetos:
Universidade Federal de Sergipe Departamento de Sistemas de Informação Bruno Cruz Jessica Rodrigo Aragão – ASP.NET MVC 3.
MDA na Prática Flávia Durans Pitta Marinho
Desenvolvimento WEB II Professora: Kelly de Paula Cunha.
Projeto de Arquitetura de Software
CIn-UFPE1 Projeto de Gerenciamento de Dados. CIn-UFPE2 Objetivos n Definir o que significa gerenciamento de dados do sistema; n Entender abordagens diferentes.
Application Server & EJB3 Wesley Gonçalves da Silva
Web Services / SOA. O cenário de TI nas corporações Novas tendências batiam à porta das corporações Migraram o foco do “gerenciamento de dados” para o.
Programação para Internet Aula 11 SQL (Introdução a linguagem, comandos de modificação: Create, Drop, Alter, Insert, Delete, Update)
Transcrição da apresentação:

Introdução ao Entity Framework 4 Everton Coimbra de Araújo everton@utfpr.edu.br http://pptinformatica.com.br/wordpress http://twitter.com/evertonfoz Fábio Augusto Pandolfo fabiopand@gmail.com http://dotando.blogspot.com http://twitter.com/fabiopand

Objetivos Contextualizar alguns conceitos relacionados à persistência de dados, bem como algumas disparidades encontradas entre os modelos relacional e orientado à objetos. Introduzir a utilização do ADO .NET Entity Framework, tecnologia que vem rápidamente ganhando muita popularidade como camada de persistência.

Agenda Visão geral sobre persistência Entity Framework Diferenças de Impedância Mapeamento Objeto/Relacional Entity Framework Database-First Model-First Code-First N-Tier Opções de consulta Entity Client Entity SQL LINQ To Entities

Orientação a objetos Herança Polimorfismo Encapsulamento

Persistência Para que serve? Quais as práticas mais utilizadas?

Modelo Relacional Armazenamento Manutenção Integridade Transações

Dificuldades impostas Cada propriedade de um objeto a ser persistida precisa ser mapeada para seu respectivo campo na tabela. O desenvolvedor precisa conhecer banco de dados e orientação a objetos. Muito trabalho de codificação.

Diferença de Paradigmas (Impedância) Granularidade Herança e polimorfismo Identidade Associações Navegação

Diferença de Paradigmas (Impedância) O exemplo abaixo não apresenta problemas de descasamento de paradigma

Diferença de Paradigmas (Impedância) Disparidade entre o objeto-relacional não aparece public class Revistas { private long id; private String nome; private List<Artigo> artigos; //(get/set), etc... } public class Artigo { private long id; private String titulo; private Revista revista; //get/set, etc... } create table REVISTAS ( ID BIGINT NOT NULL PRIMARY KEY, NOME NVARCHAR(50) NOT NULL ) create table ARTIGOS ( ID BIGINT NOT NULL PRIMARY Key, TITULO NVARCHAR(50) NOT NULL, REVISTAS_ID BIGINT FOREIGN KEY REFERENCES REVISTAS )

Problema de granularidade Imagine uma tabela de autores

Problema de granularidade E se o usuário tiver um endereço Deve ser uma nova tabela? Deve aparecer como colunas extras na tabela do usuário? Problema Objetos podem ter vários níveis de granularidade Tabelas (colunas) impõem limites

Problema de granularidade Solução usual é colocar tudo na tabela USER Problema fácil de solucionar create table AUTORES( ID BIGINT NOT NULL PRIMARY KEY, NOME NVARCHAR(50) NOT NULL, SOBRENOME NVARCHAR(50) RUA NVARCHAR(50), BAIRRO NVARCHAR(50), NUMERO NVARCHAR(50), CEP NVARCHAR(50), ) AUTOR ENDEREÇO

Problemas com Herança e Polimorfismo O modelo relacional não suporta Queremos escrever consultas que referem-se à classe Cliente e retornar instâncias concretas dessa classe!

Problema de identidade No modelo relacional, existe um critério de igualdade: Chave-primária No mundo Orientado a Ojetos há dois Igualdade de referência (no C# testado com ==) Equivalência (no C# testado com equals()) Além disso, mapeamento pode associar vários objetos a uma mesma tabela! Complicações adicionais Chaves naturais Chaves compostas

Problema de associações A orientação a objetos representa associações como referências (ou coleções de) referências para objetos São direcionais Para implementar associações bidirecionais, é preciso criar referências dos dois lados da associação Referências dos dois lados podem ser associações muitos-para-muitos No mundo relacional, associações são representadas por chaves estrangeiras Não são direcionais Pode-se criar associações com projeções e joins Associações muitos-para-muitos requerem tabela extra

Problema de navegação Navegação em objetos Pula-se de um objeto para outro sem a definição de um caminho previamente definido Equivalente a fazer um consulta a cada navegação A forma mais natural de navegar entre objetos é a forma menos eficiente de recuperar dados em SQL Soluçao: joins para minimizar as consultas Porém, é preciso traçar o caminho de navegação antes!

Table-per-Hierarchy (TPH) One table in storage to maintain data for all the types in an inheritance hierarchy.

Table-per-Type (TPT) Separate table in storage to maintain data for each type in the inheritance hierarchy.

Como implementar essa estrutura?

Como minimizar a impedância? Com a criação de uma camada de persistência para resolver os problemas de comunicação com a base de dados. Devo criar a camada ou utilizar uma pronta?

Mapeamento Objeto/Relacional Propõe soluções para minimizar a disparidade existente entre a orientação a objetos e o modelo relacional.

Dilema Os desenvolvedores preferem trabalhar com: Modelos conceituais Objetos de negócio Classes Bancos de dados foram projetados para: Manutebilidade Segurança Eficiência Escalabilidade

Tecnologias de acesso à dados Acesso à dados em 1990 ODBC, embedded SQL Acesso à dados em 2000 ADO, Stored Procedures Acesso à dados em 2005 ADO.NET, Datasets, DataReaders Acesso à dados em 2010 Entity Framework 4

Tecnologias de acesso à dados Entity Framework (EFv1) Introduzido no .NET Framework 3.5 SP1 Juntamente com o Visual Studio 2008 SP1 Lançado no em agosto de 2008 Entity Framework 4 (EFv4) Parte integrante do .NET 4 Lançado em abril de 2010

Limitações do EFv1 Ausência de Lazy Loading Sem suporte a Persistence Ignorance Dificuldades para desenvolvimento N-Tier Alguns bugs Entre outras

Fontes de inspiração do EFv4 Eric Evans, autor de Domain-Driven-Design: Tackling Complexity in the Heart of Software; Stephen Forte, diretor de estratégia na Telerik e diretor regional da Microsoft; Martin Fowler, autor de Patterns of Enterprise Application Software e muitos outros livros, e criador do termo Persistence Ignorance; Pavel Hruby, autor de Model-Driven Design Using Business Patterns and the Visio Stencil for UML and SysML; Jimmy Nilsson, autor de Applying Domain-Driven Design and Patterns with Examples in C# and .NET e criador das regras para Persistence Ignorance;

O que é o Entity Framework? Uma evolução do pacote de tecnologias ADO.NET Uma camada de abstração dos bancos de dados Separa o modelo físico do conceitual Portabilidade para os mais variados bancos de dados Imagem: http://msdn.microsoft.com/en-us/data/aa937709.aspx

Arquitetura do Entity Framework Imagem: http://www.manning.com/mostarda/

Oque é uma Entidade? Capacidade independente de existência Identificada únicamente.

Entity-Relationship Model (ERM) Nos anos 70 o Dr. Peter Chen inventou o ERM Conceptual Layer Mapping Layer Storage Layer Implementado no Entity Framework (Entity Data Model)

Entity Data Model (EDM) CSDL Mapeamento e Modelagem Entidades Relacionamentos Conjuntos lógicos MSL SSDL

Arquitetura do Entity Data Model Imagem: http://oreilly.com/catalog/9780596520298

Database-First Partindo do Banco de Dados Porque? Oque? Já existe! Cria o modelo a partir dele!

Database-First

Object Services Consultas materializadas como objetos ObjectContext ObjectQuery<T> Opções de consulta(prós e contras) Entity SQL (ESQL) Entity Client LINQ to Entities

EntityClient Streams data back to the application Resembles SqlClient, OracleClient and the other client providers using (var conn = new EntityConnection("name=ProgrammingEFDB1Entities")) { conn.Open(); var qStr = "SELECT VALUE c FROM SchoolEntities.Courses AS c "; var cmd = conn.CreateCommand(); cmd.CommandText = qStr; using (var rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess)) while (rdr.Read()) Console.WriteLine(rdr.GetString(1)); }

EntityClient

Entity SQL (ESQL) T-SQL-like query language Provide the necessary capabilities for querying the EDM EF translates Entity SQL into storage-specific queries var qStr = @"SELECT VALUE c FROM SchoolEntities.Courses AS c WHERE c.Title=‘Calculus'"; var courses = context.CreateQuery<Course>(qStr);

Entity SQL (ESQL)

LINQ to Entities Support for LINQ features Full IntelliSense support var courses = from course in context.Courses where course.Title.StartsWith("C") orderby course.Title ascending select new } Title = course.Title, Location = course.Location };

LINQ to Entities

Model-First Partindo do modelo Porque? Oque? Separação entre código e banco de dados! Oque? Cria o banco a partir dele!

Model-First

Carga Eager Loading Explicit Loading Lazy Loading

Carga

Estratégias de herança Table-per-Hierarchy (TPH) Table-per-Type (TPT)

Persistence Ignorance POCO

Code-First Início pelo código Porque? Oque? Focado no design do código http://www.microsoft.com/downloads/details.aspx?FamilyID=af18e652-9ea7-478b-8b41-8424b94e3f58&displayLang=en Code-First Início pelo código Porque? Focado no design do código Banco é um detalhe de implementação! Oque? Codificação de classes, ajustando sua forma com o ContextBuilder Não utiliza EDM!!!

Code-First

Text Template Transformation Toolkit(T4) Incluido no Visual Studio 2008 Suporte em tempo de execução, mas dificuldades em tempo de design T4 com Entity Framework T4 utilizado para gerar código do modelo Podem ser criados templates T4 customizados Lógica de validação POCOs

Text Template Transformation Toolkit

Estratégias de validação http://stackoverflow.com/questions/191143/entity-framework-validation

Estratégias de validação

Conclusões O Entity Framework ajuda no isolamento entre base de dados e aplicação e aumenta a padronização do desenvolvimento, gerando ganho de produtividade, portabilidade e facilidade de manutenção.

Links interessantes Blog - Fábio Pandolfo - Slides e recursos deste minicurso http://dotando.blogspot.com Data Developer center – Entity Framework http://msdn.microsoft.com/en-us/data/aa937723.aspx EF4 Providers http://msdn.microsoft.com/en-us/data/dd363565.aspx Artigo – Introdução ao ADO.NET Entity Framework 4 http://www.devmedia.com.br/websys.2/webreader.asp?cat=1&revista=netmagazine_73#a-2559 Artigo – What’s New in Entity Framework 4? Part 1: API Changes http://www.code-magazine.com/Article.aspx?quickid=0911121 Artigo – What’s New in Entity Framework 4? Part 1: Modeling Changes http://www.code-magazine.com/article.aspx?quickid=0909081

Links interessantes Julie Lerman http://learnentityframework.com/learnentityframework/ Wikipedia - ADO.NET Entity Framework http://en.wikipedia.org/wiki/ADO.NET_Entity_Framework Artigo – Entity Framework – Tutorial and Basics http://www.codeguru.com/csharp/csharp/cs_linq/article.php/c15489 Artigo - EF v2 and Data Access Architecture Best Practices http://msdn.microsoft.com/en-us/magazine/ee236639.aspx Video – Entity Framework – What, How, Why http://channel9.msdn.com/shows/Going+Deep/ADONET-Entity-Framework-What-How-Why/ Video – Entity Framework – Entity DataSource http://channel9.msdn.com/posts/bursteg/Overview-of-the-EntityDataSource-The-new-ASPNet-Data-Source/

Links interessantes Linq to Entities vs ESQL http://stackoverflow.com/questions/38647/linq-to-entities-vs-esql Some differences between ESQL and LINQ to Entities capabilities http://blogs.msdn.com/diego/archive/2007/12/20/some-differences-between-esql-and-linq-to-entities-capabilities.aspx Choosing an Entity Framework API http://blogs.msdn.com/diego/archive/2007/11/11/choosing-an-entity-framework-api.aspx Building N-Tier applications with the EF – The Basics http://blogs.msdn.com/b/dsimmons/archive/2009/04/09/building-n-tier-applications-with-the-ef-the-basics.aspx N-Tier Application Patterns http://msdn.microsoft.com/en-us/magazine/ee321569.aspx Cenários Distribuídos http://unplugged.giggio.net/unplugged/post/Entity-Framework-em-cenarios-distribuidos.aspx

Livros recomendados Pro Entity Framework 4.0 http://apress.com/book/view/159059990X Pro Entity Framework 4.0 http://apress.com/book/view/1430227036 Entity Framework 4.0 Recipes

Livros recomendados Programming Entity Framework http://oreilly.com/catalog/9780596520298 Programming Entity Framework http://www.manning.com/mostarda/ Entity Framework in Action

Livros recomendados C# 4 and .NET 4 http://www.wrox.com/WileyCDA/WroxTitle/Professional-C-4-0-and-NET-4.productCd-0470502258.html C# 4 and .NET 4