LINQ e Entity Framework
Gabriel P. S. Brenner
[email protected]
Instituto Tecnológico de Aeronáutica - ITA
Objetivos
O objetivo dessa apresentação é abordar o mapeamento
objeto relacional (MOR) e duas soluções que surgiram em
2008 com o lançamento do Visual Studio 2008 e da
Framework 3.5 que resolvem essa problemática de forma
natural e transparente, integrando a sintaxe da linguagem,
compilador e IDE de desenvolvimento, criando uma forma
natural de utilizar objetos mapeados de Banco de Dados
Relacionais.
Instituto Tecnológico de Aeronáutica - ITA
.NET Framework
Parte dos mesmos princípios do JAVA;
Foram utilizados os mesmos critérios de
produtividade, que já existiam em IDE’s de
desenvolvimento anteriores (Visual Basic 6.0, etc)
para criar sua IDE (Visual Studio)
Revolucionou o desenvolvimento WEB já no
lançamento de sua primeira versão
Atualmente possibilita o desenvolvimento de
sistemas Windows e Web com praticamente a
mesma agilidade
Instituto Tecnológico de Aeronáutica - ITA
Paradigmas Conflitantes
A Orientação a Objetos e o modelo relacional
se conflitam.
O Modelo Relacional armazena os dados em estruturas
lógicas, seguindo o embasamento matemático dado por
CODD, baseado na teoria dos conjuntos.
A Orientação a Objeto é baseada em outros pilares.
Possui conceitos que não existem em bancos relacionais.
Instituto Tecnológico de Aeronáutica - ITA
Paradigmas Conflitantes - Relacional
Prevê somente o armazenamento dos dados em
estruturas lógicas (Tabelas), que possuam colunas (campos) e
linhas (registros ou túplas) para representar os dados.
Refere-se exclusivamente aos dados
Todas as anomalias de atualização, exclusão e inserção
podem ser removidas com a aplicação das formas normais
Não aborda detalhes de implementação
Serve como base para armazenamento dos dados e os
SGDBs relacionais fornecem recursos para que a informação
seja recuperada rapidamente
Instituto Tecnológico de Aeronáutica - ITA
Paradigmas Conflitantes - OO
Prevê a personalização das entidades em
objetos.
Baseada nos seguintes pilares:
Classes
Encapsulamento
Ocultação de informações e implementações
Troca de Mensagens (Métodos // Propriedades // Eventos)
Retenção de estado
Herança
Polimorfismo
Construtores
Representa os dados por meio de objetos
Precisa persistir seus dados, para poderem ser
recuperados
Instituto Tecnológico de Aeronáutica - ITA
Problemas Causados
O objeto não pode ser armazenado “por inteiro”, tendo
que ser mapeado cada propriedade a ser persistida com o seu
respectivo campo na tabela
Exige um grande trabalho com codificação somente para
mapear os dados com seus respectivos recipientes
O desenvolvedor, fica amarrado e precisa conhecer os
dois modelos. O Modelo UML e o Modelo Relacional de todo e
qualquer sistema que for desenvolver
Normalmente, uma programação Orientada a Objetos no
modelo tradicional, exige a codificação individual de cada
método de comunicação necessário
Instituto Tecnológico de Aeronáutica - ITA
Soluções Existentes
Existem diversos modelos que se propõem a
solucionar esse problema, todos baseados no modelo
de desenvolvimento em camadas
O desenvolvimento em camadas prevê o
isolamento das principais funcionalidades do sistema
em camadas, seguindo os mais diversos modelos
Desenvolvimento em camadas é um assunto
relativamente antigo que começou a ganhar força com
o surgimento de tecnologias como COM/COM+,
CORBA e JBEANS.
Instituto Tecnológico de Aeronáutica - ITA
Soluções Existentes
Camada intermediária que, através de um
mapeamento dos objetos com seus respectivos
recipientes, resolva todos os problemas de
comunicação com a base de dados.
Essa camada intermediária, chama-se “Camada
de Persistência”.
Existem camadas prontas tanto para JAVA
quanto para .NET (GENTLE.NET, NHIBERNATE,
HIBERNATE, CASTOR, etc.).
A proposta mais atual é o LINQ to SQL e a
ENTITY FRAMEWORK
Instituto Tecnológico de Aeronáutica - ITA
O que é o “LINQ”
LINQ - Language integrated Query
É um conjunto de recursos introduzidos no .NET Framework 3.5 que permitem a
realização de consultas diretamente em base de dados , documentos XML ,
estrutura de dados , coleção de objetos ,etc. usando uma sintaxe parecida com a
linguagem SQL
LINQ to SQL é uma implementação específica to LINQ para o SQL Server que
converte consultas escritas em C# ou Visual Basic em SQL dinâmico , provendo
uma interface que permite mapear os objetos do banco de dados gerando as
classes para realizar as operações usando a sintaxe LINQ; também permite
realizar alterações nos objetos e atualizar o banco de dados
Instituto Tecnológico de Aeronáutica - ITA
O que é o “ADO.NET Entity Framework”
É a evolução do ADO.NET acompanhando a evolução da
ferramenta e a implementação do LINQ
Oferece o mapeamento objeto relacional (O/R) de forma a
permitir o mapeamento das tabelas do banco de dados como
objetos para abstrair o acesso a dados deixando para o
desenvolvedor que já conhece orientação a objetos mais um
grande mecanismo de acessar o banco sem precisar ter
conhecimento aprofundado de banco de dados e de T-SQL
(Trasact SQL).
Com o LINQ to Entity Framework você poderá fazer mapeamento
para diversas bases de dados (SQLServer, Oracle, DB2, MySql,
PostgreSQL, SQLite, VistaDB, Informix, Sybase ... ) assim como
para outras fontes como XML e serviços.
Instituto Tecnológico de Aeronáutica - ITA
Linq to SQL(Exemplo)
DEMONSTRAÇÃO PRÁTICA DE LINQ TO SQL
Instituto Tecnológico de Aeronáutica - ITA
Entity Framework (Exemplo)
DEMONSTRAÇÃO PRÁTICA DE ADO ENTITY FRAMEWORK
Instituto Tecnológico de Aeronáutica - ITA
Conclusão
O LINQ e a Entity Framework vieram para ficar e é provável
que propostas de outras tecnologias surjam seguindo a
mesma linha de integração Compilador X MOR.
O mínimo que se consegue com a utilização é a
padronização do desenvolvimento, o que gera ganho de
produtividade e facilidade de manutenção;
Isolar o banco de dados do desenvolvimento da aplicação,
torna muito mais evidente os modelos UML’s;
A aplicação ganha em portabilidade e entendimento;
A perda de performance é facilmente superada pelos
ganhos para a equipe de desenvolvimento;
Em sistemas de alta escalabilidade, pode ser que a
camada de persistência não seja a solução ideal.
Instituto Tecnológico de Aeronáutica - ITA
Download

LINQ_EntityFramework