Do que trata o artigo

O ADO .NET Entity Framework é a principal ferramenta para mapeamento objeto/relacional já criada pela Microsoft. A LINQ (Language Integrated Query) é um componente do .NET que disponibiliza mecanismos para efetuar consultas de propósito geral, com uma sintaxe parecida com a da SQL (Structured Query Language). Este artigo apresenta o LINQ to Entities, o qual é uma implementação específica do LINQ, e em conjunto com o Entity Framework, provê facilidades de acesso e manipulação para os principais bancos de dados relacionais.

Para que serve

A escolha das tecnologias referentes ao armazenamento de dados está intimamente ligada ao ambiente de desenvolvimento de software, e seguramente está entre um dos pontos mais críticos a serem observados. Existe uma enorme quantidade de técnicas, práticas e soluções disponíveis, entretanto, uma abordagem que vem ganhando cada vez mais popularidade é o mapeamento objeto/relacional, que propõe soluções para minimizar a disparidade existente entre a orientação a objetos e o modelo relacional. O Entity Framework e o LINQ to Entities resolvem essa problemática de forma natural e transparente, integrando sintaxe de linguagem, compilador e IDE (Integrated Development Environment) de desenvolvimento.

Em que situação o tema é útil

Para que possam ser recuperados posteriormente, os dados de uma aplicação precisam estar armazenados. A escolha adequada de um mecanismo de persistência se faz necessária, e entre as abordagens mais utilizadas, a tecnologia de banco de dados relacional é a mais sobressalente. O modelo relacional e o orientado a objetos possuem conceitos e recursos distintos, gerando dificuldades para sua utilização conjunta. A Microsoft soluciona esta dificuldade com o Entity Framework e o LINQ to Entities, que retiram do desenvolvedor a responsabilidade de conhecer profundamente o modelo relacional, proporcionando assim uma maior produtividade ao desenvolvimento de aplicações com persistência e posteriormente uma manutenção simplificada.

Resumo do DevMan

O conteúdo deste artigo contextualiza alguns conceitos relacionados à persistência de dados, bem como informa o leitor sobre algumas disparidades encontradas entre os modelos relacional e orientado a objetos. É feita uma introdução básica e teórica, de uma tecnologia que inicialmente havia sido criada com o intuito de consultar objetos em memória, denominada LINQ. Através do Entity Framework, utilizado como camada de persistência, é apresentada uma implementação específica do LINQ, o LINQ to Entities, que é uma das tecnologias mais promissoras e produtivas já criadas para consultar dados relacionais.

Autores: Everton Coimbra de Araújo e Fábio Augusto Pandolfo

O mapeamento objeto/relacional é tema de discussões há muito tempo. De um lado estão as linguagens de programação orientadas a objeto, que representam as tecnologias dominantes para o desenvolvimento de aplicações. Do outro, aparecem os bancos de dados relacionais, que estão consolidados e aparecem como o principal mecanismo de acesso a dados existentes. Essas duas tecnologias divergem em vários aspectos (impedância objeto/relacional), cada qual possuindo virtudes e fragilidades.

O Entity Framework é a principal ferramenta OR/M (Object-Relational Mapping) desenvolvida pela Microsoft e oferece soluções para as dificuldades impostas pela disparidade de paradigmas.

Este artigo apresenta o LINQ to Entities, que é uma linguagem de consulta fortemente tipada, utilizada em conjunto com o Entity Framework, e que se propõe a maximizar a produtividade dos desenvolvedores que necessitam manipular dados relacionais.

Persistência

A utilização da persistência permite que dados sejam e continuem armazenados mesmo após a execução das aplicações que os utilizam. O mecanismo de persistência a ser utilizado é uma escolha fundamental no desenvolvimento de software.

Uma boa prática a ser levada em conta, é o isolamento das principais funcionalidades do sistema em camadas, e a camada responsável por resolver a comunicação com a base de dados denomina-se “Camada de Persistência”.

Banco de dados relacional

Um banco de dados relacional prevê o armazenamento de dados em tabelas, as quais possuem linhas e colunas para representá-los.

Os SGBDs (Sistemas Gerenciadores de Bancos de Dados) possibilitam que as informações armazenadas em uma base de dados sejam recuperadas rapidamente, além de oferecer recursos para que as anomalias de inserção, atualização e exclusão possam ser removidas.

Impedância

A programação orientada a objetos é uma excelente abordagem para a construção de aplicações complexas, bem como as bases de dados relacionais constituem um meio eficaz para o armazenamento de dados.

A utilização conjunta dessas tecnologias impõe uma série de dificuldades, tais como granularidade, herança, polimorfismo, identidade e associações. Fica evidente a existência de conceitos distintos entre ambas, e essa incompatibilidade de paradigmas é comumente chamada de “Impedância objeto/relacional” ou simplesmente “Diferença de Impedância”.

Mapeamento objeto-relacional

A orientação a objetos representa dados por meio de objetos, entidades de negócio que traduzem o mundo real, e a persistência não deve prejudicar a capacidade de manipulá-los corretamente. Para que uma entidade possa ser armazenada em um meio relacional, cada propriedade a ser persistida deve ser mapeada para seu respectivo campo na tabela do banco de dados.

Com o mapeamento objeto/relacional, é possível criar uma camada intermediária que tenha a habilidade de transformar entidades de negócio em dados relacionais e vice versa. A criação manual dessa camada intermediária exige um esforço considerável de codificação. Deixando, portanto, o desenvolvedor amarrado à necessidade de um profundo conhecimento tanto de banco de dados quanto de orientação a objetos (tendo em vista que várias técnicas e conceitos são necessários para o entendimento de todo o contexto que envolve este tema).

ADO .NET Entity Framework

Capaz de abstrair o esquema de um banco de dados relacional e apresentá-lo como um modelo conceitual, mapeando tabelas para entidades (objetos que representam dados), e preenchendo as lacunas existentes entre os modelos relacional e orientado a objetos, o ADO .NET Entity Framework é uma ferramenta OR/M robusta, e suas capacidades de modelagem, acesso e manipulação de dados diminuem o ruído inerente às diferenças de impedância.

Todo o acesso a dados e armazenamento é feito através de um modelo de dados conceitual, que reflete as tabelas do banco na forma de entidades, livrando o desenvolvedor de se concentrar no seu mapeamento manual e ainda da escrita direta de consultas SQL. Essas tarefas eram tediosas e exigiam conhecimento avançado de banco de dados.

O Entity Framework é conhecido como a evolução do pacote de tecnologias ADO.NET, e sua portabilidade se estende aos mais variados bancos de dados, sendo a implementação de referência da Microsoft para o mapeamento objeto/relacional.

Utilizando este OR/M, o desenvolvedor é encorajado a iniciar escrevendo a lógica da aplicação, fazendo uso de um modelo de dados totalmente orientado a objetos, e sua arquitetura simplificada pode ser visualizada na Figura 1.

Existem três opções de consulta disponibilizadas pelo Entity Framework, sendo elas:

· Entity SQL (ESQL);

· LINQ to Entities;

· EntityClient;

Este artigo limita-se ao estudo do LINQ to Entities e para que este seja entendido, são necessários conhecimentos sobre o Entity Framework e o LINQ (Language Integrated Query). É válido esclarecer que o LINQ to Entities é uma implementação específica do LINQ, portada para o Entity Framework.

Figura 1. Arquitetura resumida

LINQ (Language Integrated Query)

A Language-Integrated Query é um conjunto de tecnologias baseadas na integração de recursos de consulta, os quais propiciam a manipulação de dados em linguagens de programação .NET, utilizando-se de uma sintaxe compacta, expressiva, inteligível e familiar com a SQL.

...
Quer ler esse conteúdo completo? Tenha acesso completo