25
Mapeamento Objeto-Relacional com LINQ Grupo 4 Análise e Projeto Orientado a Objetos

Mapeamento Objeto-Relacional com LINQ

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Mapeamento Objeto-Relacional com LINQ

Mapeamento Objeto-Relacional com LINQ

Grupo 4

Análise e Projeto Orientado a Objetos

Page 2: Mapeamento Objeto-Relacional com LINQ

LINQ

Page 3: Mapeamento Objeto-Relacional com LINQ

Mapeamento Objeto-Relacional com LINQ Grupo 4

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

Page 4: Mapeamento Objeto-Relacional com LINQ

Mapeamento Objeto-Relacional com LINQ Grupo 4

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

Page 5: Mapeamento Objeto-Relacional com LINQ

LINQ to Object

Page 6: Mapeamento Objeto-Relacional com LINQ

Mapeamento Objeto-Relacional com LINQ Grupo 4

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.

Page 7: Mapeamento Objeto-Relacional com LINQ

Mapeamento Objeto-Relacional com LINQ Grupo 4

Examples

Page 8: Mapeamento Objeto-Relacional com LINQ

Mapeamento Objeto-Relacional com LINQ Grupo 4

Examples

Page 9: Mapeamento Objeto-Relacional com LINQ

Mapeamento Objeto-Relacional com LINQ Grupo 4

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.

Page 10: Mapeamento Objeto-Relacional com LINQ

Mapeamento Objeto-Relacional com LINQ Grupo 4

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.

Page 11: Mapeamento Objeto-Relacional com LINQ

Mapeamento Objeto-Relacional com LINQ Grupo 4

OperadoresAny, 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.

Page 12: Mapeamento Objeto-Relacional com LINQ

LINQ to XML

Page 13: Mapeamento Objeto-Relacional com LINQ

Mapeamento Objeto-Relacional com LINQ Grupo 4

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.

Page 14: Mapeamento Objeto-Relacional com LINQ

Mapeamento Objeto-Relacional com LINQ Grupo 4

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") == 1select p;foreach(var registro in consulta)

{Console.WriteLine("Pessoa: {0} {1}",registro.Element("nome"),registro.Element("sobrenome"));

}

Page 15: Mapeamento Objeto-Relacional com LINQ

LINQ to DataSet

Page 16: Mapeamento Objeto-Relacional com LINQ

Mapeamento Objeto-Relacional com LINQ Grupo 4

DataSet o que é?

O primeiro dos dois maiores componentes da arquitetura ADO.NET, veio pra substituir o antigo Recordsetda 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.

Page 17: Mapeamento Objeto-Relacional com LINQ

Mapeamento Objeto-Relacional com LINQ Grupo 4

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

LINQ to DataSet

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.

Page 18: Mapeamento Objeto-Relacional com LINQ

LINQ to SQL

Page 19: Mapeamento Objeto-Relacional com LINQ

Mapeamento Objeto-Relacional com LINQ Grupo 4

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.

Page 20: Mapeamento Objeto-Relacional com LINQ

Mapeamento Objeto-Relacional com LINQ Grupo 4

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.

Page 21: Mapeamento Objeto-Relacional com LINQ

Mapeamento Objeto-Relacional com LINQ Grupo 4

LINQ to SQL

Classes geradas pelo LINQ to SQL

public partial class NorthwindDataContext : System.Data.Linq.DataContextpublic partial class Product : INotifyPropertyChanging, INotifyPropertyChangedpublic partial class Category : INotifyPropertyChanging, INotifyPropertyChanged

Page 22: Mapeamento Objeto-Relacional com LINQ

Mapeamento Objeto-Relacional com LINQ Grupo 4

LINQ to SQL

Selectusing( NorthwindDataContext db = new NorthwindDataContext()) {

IEnumerable<Product> beverages = from p in db.Productswhere p.Category.CategoryName == "Beverages"orderby p.ProductNameselect p;

}

Page 23: Mapeamento Objeto-Relacional com LINQ

Mapeamento Objeto-Relacional com LINQ Grupo 4

LINQ to SQL

Updateusing( NorthwindDataContext db = new NorthwindDataContext()) {

Product p = db.Products.First();p.UnitPrice = (decimal)20.00;db.SubmitChanges();

}

Page 24: Mapeamento Objeto-Relacional com LINQ

Mapeamento Objeto-Relacional com LINQ Grupo 4

LINQ to SQL

Imagine o seguinte cenário....

Padrão-less Entidades Externas

LINQ to SQL Aplicação

Page 25: Mapeamento Objeto-Relacional com LINQ

Mapeamento Objeto-Relacional com LINQ Grupo 4

LINQ to SQL

Imagine o seguinte cenário....

Padrão-less Entidades Externas

LINQ to SQL Aplicação