DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 
DevWare  
Novidade: DevMedia lança o DevWare - Saiba mais!


  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Easy .net magazine
ou 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.

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você gostaria de comentar o que não lhe agradou?





Easy .net magazine 18

[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: conjunto de entidades com uma estrutura comum e a partir dos quais são disparadas operações de consulta, inclusão, alteração e exclusão. T corresponde, neste caso, a uma classe derivada de ObjectEntity;

·         EntityCollection: tipo utilizado para representar relacionamentos que se estabelecem entre entidades, com isto, normalmente se originando a partir de chaves estrangeiras (foreign keys) presentes na base de dados que originou o modelo. T é uma classe que herda de ObjectEntity, sendo que entidades-pai possuirão propriedades que são, na verdade, coleções derivadas de EntityCollection; já entidades-filhas contam, normalmente, com uma referência do tipo ObjectEntity que aponta para a estrutura-pai.

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 a qual, herda o tipo IEnumerable.

Conforme exemplificado em artigos anteriores, o uso de LINQ to Objects, IEnumerable é a interface básica para a manipulação de coleções de objetos. Consultas em LINQ to Entities retornam instâncias derivadas de IQueryable: objetos de tipos que implementam IQueryable estendem tais características, permitindo a montagem de queries complexas e que valem de uma técnica chamada de lazy loading para otimizar o acesso a bancos de dados.

 Utilizando o Entity Framework e LINQ to Entities

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. "

A exibição deste artigo foi interrompida.

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Easy .net magazine
ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


Renato Jose Groffe
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...
O que você achou deste post?

    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
[Fechar] Você precisa estar logado para dar seu feedback.

Clique aqui para efetuar o login

Caso não tenha um cadastro DevMedia, clique aqui para se cadastrar (gratuito)
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03