Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
LINQ to Entities - Revista easy .net Magazine 18
Este artigo tem por finalidade abordar o recurso conhecido como LINQ to Entities, utilizado em aplicações que empreguem o Entity Framework como mecanismo de acesso a bases de dados.
Você não gostou da qualidade deste conteúdo?
(opcional) Você gostaria de comentar o que não lhe agradou?
[Artigo disponível no Leitor Digital DevMedia. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da Easy .net magazine 18
Na edição anterior, foi
iniciada a discussão sobre a utilização de LINQ com bancos de dados
relacionais, através da introdução do mecanismo conhecido como LINQ to SQL. Este
artigo conclui a série sobre LINQ, continuando a abordar bancos de dados
relacionais com a apresentação da extensão conhecida como LINQ to Entities.
Bancos de dados
relacionais correspondem atualmente como principal meio para armazenamento de
informações em aplicações. A praticidade representada por este tipo de recurso possibilita
os mais variados contextos possíveis para soluções computacionais e um gerenciamento
eficaz dos dados a uma série de processos. As operações necessárias envolvem o
uso da linguagem SQL (Structured Query Language).
A plataforma .NET
dispõe de um extenso conjunto de recursos para tarefas relacionadas ao acesso a
dados. Exemplos são as tecnologias ADO.NET (ActiveX Data Object for .NET) e
LINQ to SQL.
No caso do ADO.NET,
os principais bancos de dados do mercado oferecem suporte para a construção de
soluções .NET baseadas nos mesmos. Embora o ADO.NET conte com uma ampla gama de
recursos que atendem praticamente qualquer tipo de demanda, o mesmo não possui um
mecanismo nativo para o tratamento de dados por meio de técnicas de orientação
a objetos.
Não é o caso do LINQ
to SQL, que mesmo sendo uma extensão que suporta apenas o SQL Server, apresenta
dispositivos destinados a este fim e que utiliza uma técnica conhecida como
mapeamento objeto-relacional.
O Entity Framework é
uma tecnologia que existe desde o .NET 3.5, representando uma alternativa que
procura suprir algumas das limitações existentes no LINQ to SQL. Por utilizar
em sua estrutura os mecanismos de acesso do ADO.NET, o Entity Framework possui compatibilidade(em
teoria) com quaisquer bancos de dados que suportam esta tecnologia (desde que
os fornecedores de tais bancos também disponibilizem drivers específicos para a
utilização do Entity Framework).
No LINQ to Entities, consultas são executadas sobre classes de objetos geradas via Entity Framework. Estes tipos correspondem a estruturas de um banco de dados relacional como tabelas ou views, por exemplo. Assim, a finalidade deste artigo será demonstrar como o LINQ pode ser usado em conjunto com o Entity Framework, bem como discutir de que maneira são implementadas as operações de inclusão, alteração ou exclusão de registros quando da utilização desta ferramenta ORM.
Visão geral Entity Framework e LINQ to Entities
O ADO.NET Entity Framework
permite a manipulação de informações presentes em um banco de dados através da
aplicação de técnicas originárias da orientação a objetos. A partir desta
abordagem, esta tecnologia procura dispensar os desenvolvedores da necessidade
de acesso direto a estruturas de uma base relacional, assim como do conhecimento
da sintaxe SQL para manipulação deste repositório.
O Entity Framework
parte conceitualmente da ideia de entidades de negócio para abstrair as classes
que irão permitir a realização de operações sobre agrupamentos de dados. Entidades
devem ser compreendidas como elementos que fazem parte de um contexto e que
contam com dados (atributos) que são objeto de interesse para uma aplicação de
software. Considerando uma solução de faturamento, notas fiscais, faturas,
clientes e produtos seriam alguns exemplos de prováveis entidades que estariam
sendo consumidas pela mesma.
As diversas classes
que irão permitir a realização de tarefas como consultas, inclusões, alterações
ou exclusões de registros são agrupadas em um Entity Data Model (EDM). Este
último corresponde à representação gráfica de um modelo lógico que centraliza
as diversas entidades necessárias a um determinado contexto, além de controlar
os possíveis relacionamentos que se estabelecem entre tais estruturas.
Um Entity Data Model
é um arquivo XML de extensão .edmx, sendo normalmente criado a partir de um
wizard disponibilizado pelo Visual Studio (no exemplo detalhado mais adiante
será utilizado tal recurso). É possível que modelos deste tipo sejam baseados
em estruturas de um banco de dados já existente ou não.
Importante salientar
que o Entity Framework teve por base para a sua construção a tecnologia
ADO.NET. O acesso dados em ADO.NET ocorre por meio de data providers, sendo que
é através deste mecanismo que ocorre a comunicação entre aplicação e a base
relacional. Cada tipo de banco de dados capaz de ser suportado na plataforma
.NET conta com um data provider específico, e geralmente, implementado pelo
fabricante da solução.
O uso do Entity Framework
com um determinado banco de dados dependerá, basicamente da existência de um
EntityClient provider para o acesso a tal repositório de informações. Já um
EntityClient, por sua vez, estende um ADO.NET provider convencional, fornecendo
os recursos necessários para a manipulação de dados de uma base relacional com
consultas escritas em LINQ além de classes que representam estruturas como
tabelas e views.
Em termos de
arquitetura, os tipos que correspondem as representações gráficas de um Entity
Data Model, estão situados no namespace System.Data.Objects. A seguir estão
listados os nomes destas classes, bem como a quais estruturas as mesmas se
referem:
·
ObjectContext: tipo que
equivale ao Entity Data Model, sendo o centralizador dos diversos elementos que
estarão sendo utilizados por uma aplicação;
·
ObjectEntity: entidade cuja
estrutura baseia-se em um objeto da base de dados como uma tabela ou view, com
os campos sendo representados como propriedades;
·
ObjectSet
·
EntityCollection
LINQ to Entities é o
mecanismo de consulta empregado pelo Entity framework na recuperação de
informações que constem numa fonte de dados vinculada a um modelo. Através
desta extensão é possível à realização de queries (consultas) em LINQ
empregando instruções convencionais (utilizando from, select, where, orderby,
etc.), quanto à utilização de expressões lambdas e métodos que efetuam
transformações sobre agrupamentos de dados: isto se deve ao fato das consultas
no Entity Framework retornarem coleções de objetos baseadas na interface
genérica IQueryable
Conforme
exemplificado em artigos anteriores, o uso de LINQ to Objects,
IEnumerable
A utilização de
recursos do Entity framework e de LINQ to Entities acontece basicamente,
tomando-se como base um modelo de dados (no caso, um arquivo de extensão
.edmx). Conforme citado na seção anterior, neste tipo de elemento estruturas de
um banco de dados são mapeadas por meio de classes.
Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Atua como consultor em atividades voltadas ao desenvolvimento de softwares há mais de 10 anos. Bacharel em Sistemas de Informação, com especialização em Engenharia de Software. Microsoft Certified Technology Specialist (Web, WCF, Distributed Applications, ADO.NET, Windows Forms), Microsoft Specialis...




