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.
Atenção você precisa do Visual Studio 2008 ou o Visual Web Developer 2008 Express (.NET Framework 3.5) instalado
3. Grupo 4
Mapeamento Objeto-Relacional com LINQ
O que é 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.
Atenção você precisa do Visual Studio 2008 ou o Visual Web Developer 2008 Express (.NET
Framework 3.5) instalado
4. Grupo 4
Mapeamento Objeto-Relacional com LINQ
Arquitetura LINQ
OBS: LINQ to SQL é uma solução OR/M (Acesso a Dados) e os outros tipos de LINQ
(Objects, Datasets, Entities, XML) são linguagens de consulta
6. Grupo 4
Mapeamento Objeto-Relacional com LINQ
LINQ to Object
Consiste na execução de “queries” semelhantes às escritas em SQL (Structured Query
Language) sobre coleções que implementam uma das interfaces IEnumerable ou
IEnumerable<T>.
Objetivo é realizar consultas sobre coleções que implementam as interfaces
IEnumerable ou IEnumerable<T>, ou seja, Arrays, Listas genéricas do tipo List<T>,
dicionários de dados, textos, etc.
9. Grupo 4
Mapeamento Objeto-Relacional com LINQ
Operadores
Select - Faz uma projeção na coleção de dados para selecionar regiões relevantes entre os elementos.
Where - Define regras de filtragem na coleção de dados que são avaliadas para cada item.
SelectMany - Mapeamento estipulado pelo programador de uma coleção de dados para coleções.
Sum, Min, Max, Average - Encontra a soma, o menor elemento, o maior elemento ou a média dos itens da coleção
de dados, respectivamente.
Join, GroupJoin - Faz a junção de duas coleções de dados, baseado em chaves de comum valor semântico em cada
coleção.
Take, TakeWhile - O primeiro seleciona os primeiros n ojectos da coleção, enquanto o segundo toma um predicado
que seleciona os objectos que casam com o predicado.
Skip, SkipWhile - Complementos dos anteriores, eles ignoram os primeiros n objetos da coleção, ou enquanto há
casamento com o predicado.
OfType - Seleciona objetos de determinado tipo.
10. Grupo 4
Mapeamento Objeto-Relacional com LINQ
Operadores
Concat - Concatena duas coleções.
OrderBy, ThenBy - O primeiro determina o critério de ordenação da coleção de dados, ascendente por padrão. O
segundo especifica critérios subsequentes de ordenação.
Reverse - Inverte a ordenação da coleção de dados.
GroupBy - Extrai uma chave e retorna uma coleção para cada chave.
Distinct - Remove instâncias repetidas na coleção.
Union, Intersect, Except - Provem união, interseção e complementar em duas sequências, respectivamente.
SequenceEqual - Verifica se todos os elementos de duas coleções são iguais.
First, FirstOrDefault, Last, LastOrDefault - Retorna o primeiro elemento, o primeiro ou o valor padrão, o último, o
último ou valor padrão da coleção de dados, respectivamente.
Single - Retorna o único elemento que casa um predicado dado. Havendo nenhum ou múltiplos casamentos, uma
exceção é lançada.
ElementAt - Retorna o elemento em determinado índice na coleção de dados.
11. Grupo 4
Mapeamento Objeto-Relacional com LINQ
Operadores
Any, All, Contains
O primeiro verifica se algum elemento da coleção casa o predicado. O segundo verifica se todos os elementos da
coleção casam o predicado. O terceiro verifica se a coleção contém determinado valor.
Count
Conta a quantidade de elementos em uma coleção.
Ainda são especificados alguns operadores de conversão da coleção em outro tipo:
• AsEnumerable: converte para IEnumerable<T>.
• ToQueryable: converte para IQueryable<T>.
• ToArray: converte para vetor.
• ToList: converte para IList<T>.
• ToDictionary: converte para IDictionary<K, T>, indexado por K.
• ToLookup: converte para ILookup<K, T>, indexado por K.
• Cast: converte uma coleção IEnumerable não-genérica para uma IEnumerable<T>, por conversão de tipo.
• OfType: converte uma coleção IEnumerable não-genérica para uma IEnumerable<T>, incluindo somente
elementos do tipo T.
13. Grupo 4
Mapeamento Objeto-Relacional com LINQ
LINQ to XML
Visto que eliminar tamanha complexidade é um dos objetivos principais do LINQ to
XML.
Embora a plataforma .NET lhe oferece recursos para tratar com XML , o LINQ to XML
vai além, pois ele integra os operadores padrão de consulta do LINQ com XML, e, além
disso, o oferece também classes para criar e gerenciar facilmente XML.
Dessa forma o LINQ to XML permite que você fique focado no que você tem que fazer
e não em como fazer tornando assim o XML apenas uma fonte de dados para o LINQ.
14. Grupo 4
Mapeamento Objeto-Relacional com LINQ
Examples
<?xml version="1.0" encoding="utf-8" ?>
<empregado>
<!--secção pessoa-->
<pessoa>
<id>1</id>
<nome>Jose Carlos</nome>
<sobrenome>Macoratti</sobrenome>
<idperfil>1</idperfil>
</pessoa>
<pessoa>
<id>2</id>
<nome>Jefferson</nome>
<sobrenome>Andre</sobrenome>
<idperfil>2</idperfil>
</pessoa>
<!--pseção perfil->
<perfil>
<id>1</id>
<perfildescricao>Gerente</perfildescricao>
</perfil>
<perfil>
<id>2</id>
<perfildescricao>Analista</perfildescricao>
</perfil>
<!--seção salario->
<salario>
<idpessoa id="1" ano="2006" salarioano="10000,00"
/>
<idpessoa id="1"ano="2007" salarioano="15000,00"
/>
</salario>
</empregado>
XElement xml = XElement.Load(@"....Empregado.xml");
var consulta = from p in
xml.Elements("empregado").Elements("pessoa")
where (int)p.Element("id") == 1
select p;foreach(var registro in consulta)
{
Console.WriteLine("Pessoa: {0} {1}",
registro.Element("nome"),
registro.Element("sobrenome"));
}
16. Grupo 4
Mapeamento Objeto-Relacional com LINQ
DataSet o que é?
O primeiro dos dois maiores componentes da arquitetura ADO.NET, veio pra substituir o antigo Recordset
da ADO. Para a camada de apresentação, o DataSet está integrado com controles de GUI para a vinculação
de dados. Para a camada intermediária, ele fornece um cache que preserva o formato relacional de dados, e
inclui serviços simples rápidos de consulta e navegação a hierarquia.
Principal característica : - Totalmente desconectado.
Quando usar ?
-Armazenar dados por um longo período.
-Transferir dados para outras classes.
-Fazer atualizações e alterações nos dados sem usar procedimentos armazenados nem declarações SQL.
-Salvar e recuperar dados como um arquivo XML.
-Poder ler dados e navegar pelos dados sem restrições para frente e para trás entre as tabelas do banco de
dados.
17. Grupo 4
Mapeamento Objeto-Relacional com LINQ
LINQ to DataSet
É um componente do. NET Framework versão 3.5, que simplifica as consultas permitindo aos
desenvolvedores criar consultas com a própria linguagem de programação, em vez de usar uma
linguagem de consulta separada e fornece a verificação em tempo de compilação.
Positivo Negativo
Otimiza a performance do banco reduzindo o
número de acessos.
Recursos de consulta limitados.
Manipular os dados em memória mantendo
sua forma relacional.
Soluções para oracle não são padrão.
Permite consultar dados consolidados de
uma ou mais fontes.
19. Grupo 4
Mapeamento Objeto-Relacional com LINQ
LINQ to SQL
é um componente do. NET Framework versão 3.5, que fornece uma infra-estrutura em tempo
de execução para a gestão dados relacionais como objetos.
Suporte a transações
Functions
Stored Procedures
Views
ORM a grosso modo é uma técnica que reúne um conjunto de classes que mapeiam as entidades de um
bando de dados relacional.
20. Grupo 4
Mapeamento Objeto-Relacional com LINQ
LINQ to SQL
é um componente do. NET Framework versão 3.5, que fornece uma infra-estrutura em tempo
de execução para a gestão dados relacionais como objetos.
Suporte a transações
Functions
Stored Procedures
Views
Aplicação
LINQ to SQL
ADO.NET SQL Server
ORM a grosso modo é uma técnica que reúne um conjunto de classes que mapeiam as entidades de um
bando de dados relacional.
21. Grupo 4
Mapeamento Objeto-Relacional com LINQ
LINQ to SQL
Classes geradas pelo LINQ to SQL
public partial class NorthwindDataContext : System.Data.Linq.DataContext
public partial class Product : INotifyPropertyChanging, INotifyPropertyChanged
public partial class Category : INotifyPropertyChanging, INotifyPropertyChanged
22. Grupo 4
Mapeamento Objeto-Relacional com LINQ
LINQ to SQL
Select
using( NorthwindDataContext db = new NorthwindDataContext())
{
IEnumerable<Product> beverages = from p in db.Products
where p.Category.CategoryName == "Beverages"
orderby p.ProductName
select p;
}
23. Grupo 4
Mapeamento Objeto-Relacional com LINQ
LINQ to SQL
Update
using( NorthwindDataContext db = new NorthwindDataContext())
{
Product p = db.Products.First();
p.UnitPrice = (decimal)20.00;
db.SubmitChanges();
}
24. Grupo 4
Mapeamento Objeto-Relacional com LINQ
LINQ to SQL
Imagine o seguinte cenário....
Padrão-less Entidades Externas
LINQ to SQL Aplicação
25. Grupo 4
Mapeamento Objeto-Relacional com LINQ
LINQ to SQL
Imagine o seguinte cenário....
Padrão-less Entidades Externas
LINQ to SQL Aplicação