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