SlideShare uma empresa Scribd logo
1 de 25
Análise e Projeto Orientado a Objetos 
Grupo 4 
Mapeamento Objeto-Relacional com LINQ
LINQ
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
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
LINQ to Object
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.
Grupo 4 
Mapeamento Objeto-Relacional com LINQ 
Examples
Grupo 4 
Mapeamento Objeto-Relacional com LINQ 
Examples
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.
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.
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.
LINQ to XML
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.
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")); 
}
LINQ to DataSet
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.
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.
LINQ to SQL
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.
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.
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
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; 
}
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(); 
}
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
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

Mais conteúdo relacionado

Semelhante a LINQ Mapeamento

Um passo em frente com o Entity Framework - Henrry Pires
Um passo em frente com o Entity Framework - Henrry PiresUm passo em frente com o Entity Framework - Henrry Pires
Um passo em frente com o Entity Framework - Henrry PiresComunidade NetPonto
 
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e ElasticsearchTDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearchtdc-globalcode
 
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Tchelinux
 
Avançando em Queries no Elasticsearch - TDC Sala Elastic
Avançando em Queries no Elasticsearch - TDC Sala ElasticAvançando em Queries no Elasticsearch - TDC Sala Elastic
Avançando em Queries no Elasticsearch - TDC Sala ElasticRoberto Alves
 
Descomplicando Queries com Elasticsearch
Descomplicando Queries com ElasticsearchDescomplicando Queries com Elasticsearch
Descomplicando Queries com ElasticsearchRoberto Alves
 
Bancos de Dados Orientados a Objeto
Bancos de Dados Orientados a ObjetoBancos de Dados Orientados a Objeto
Bancos de Dados Orientados a Objetoelliando dias
 
[NetPonto] Entity Framework 4 Code-First
[NetPonto] Entity Framework 4 Code-First[NetPonto] Entity Framework 4 Code-First
[NetPonto] Entity Framework 4 Code-FirstVitor Tomaz
 
Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Eduardo Carvalho
 
Semana acadêmica UFRGS 2014
Semana acadêmica UFRGS 2014Semana acadêmica UFRGS 2014
Semana acadêmica UFRGS 2014Daniela Macedo
 
Lilacs application profile
Lilacs application  profileLilacs application  profile
Lilacs application profileSueli Suga
 
Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012Frederico Maia Arantes
 
Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...
Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...
Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...Edisio Nascimento
 

Semelhante a LINQ Mapeamento (20)

Um passo em frente com o Entity Framework - Henrry Pires
Um passo em frente com o Entity Framework - Henrry PiresUm passo em frente com o Entity Framework - Henrry Pires
Um passo em frente com o Entity Framework - Henrry Pires
 
LINQ
LINQLINQ
LINQ
 
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e ElasticsearchTDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
 
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
 
Avançando em Queries no Elasticsearch - TDC Sala Elastic
Avançando em Queries no Elasticsearch - TDC Sala ElasticAvançando em Queries no Elasticsearch - TDC Sala Elastic
Avançando em Queries no Elasticsearch - TDC Sala Elastic
 
Descomplicando Queries com Elasticsearch
Descomplicando Queries com ElasticsearchDescomplicando Queries com Elasticsearch
Descomplicando Queries com Elasticsearch
 
Material Seminário NoSQL
Material Seminário NoSQLMaterial Seminário NoSQL
Material Seminário NoSQL
 
Bancos de Dados Orientados a Objeto
Bancos de Dados Orientados a ObjetoBancos de Dados Orientados a Objeto
Bancos de Dados Orientados a Objeto
 
[NetPonto] Entity Framework 4 Code-First
[NetPonto] Entity Framework 4 Code-First[NetPonto] Entity Framework 4 Code-First
[NetPonto] Entity Framework 4 Code-First
 
Entity Framework 4 Code-First
Entity Framework 4 Code-FirstEntity Framework 4 Code-First
Entity Framework 4 Code-First
 
J530 3 jndi
J530 3 jndiJ530 3 jndi
J530 3 jndi
 
Seminário - Java Collections
Seminário - Java CollectionsSeminário - Java Collections
Seminário - Java Collections
 
Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections
 
Semana acadêmica UFRGS 2014
Semana acadêmica UFRGS 2014Semana acadêmica UFRGS 2014
Semana acadêmica UFRGS 2014
 
Lilacs application profile
Lilacs application  profileLilacs application  profile
Lilacs application profile
 
Hibernate - Aula 01
Hibernate - Aula 01Hibernate - Aula 01
Hibernate - Aula 01
 
Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012
 
Classes e Estrutura de Dados
Classes e Estrutura de DadosClasses e Estrutura de Dados
Classes e Estrutura de Dados
 
Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...
Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...
Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...
 
Sql - introdução
Sql -  introduçãoSql -  introdução
Sql - introdução
 

Mais de Francke Peixoto

RESULTADO DA PESQUISA SOBRE OS FIIS FAVORITOS DOS USUÁRIOS DO GRUPO FALA FII
RESULTADO DA PESQUISA SOBRE OS FIIS FAVORITOS DOS USUÁRIOS DO GRUPO FALA FII RESULTADO DA PESQUISA SOBRE OS FIIS FAVORITOS DOS USUÁRIOS DO GRUPO FALA FII
RESULTADO DA PESQUISA SOBRE OS FIIS FAVORITOS DOS USUÁRIOS DO GRUPO FALA FII Francke Peixoto
 
Resultado da pesquisa: O uso de informações para análise Fundos Imobiliários
Resultado da pesquisa: O uso de informações para análise  Fundos ImobiliáriosResultado da pesquisa: O uso de informações para análise  Fundos Imobiliários
Resultado da pesquisa: O uso de informações para análise Fundos ImobiliáriosFrancke Peixoto
 
Smp sistema de manutenção planejada
Smp sistema de manutenção planejadaSmp sistema de manutenção planejada
Smp sistema de manutenção planejadaFrancke Peixoto
 
Desenvolvimento Ágil de Software
Desenvolvimento Ágil de SoftwareDesenvolvimento Ágil de Software
Desenvolvimento Ágil de SoftwareFrancke Peixoto
 
Javascript - boas práticas
Javascript - boas práticasJavascript - boas práticas
Javascript - boas práticasFrancke Peixoto
 

Mais de Francke Peixoto (8)

RESULTADO DA PESQUISA SOBRE OS FIIS FAVORITOS DOS USUÁRIOS DO GRUPO FALA FII
RESULTADO DA PESQUISA SOBRE OS FIIS FAVORITOS DOS USUÁRIOS DO GRUPO FALA FII RESULTADO DA PESQUISA SOBRE OS FIIS FAVORITOS DOS USUÁRIOS DO GRUPO FALA FII
RESULTADO DA PESQUISA SOBRE OS FIIS FAVORITOS DOS USUÁRIOS DO GRUPO FALA FII
 
Resultado da pesquisa: O uso de informações para análise Fundos Imobiliários
Resultado da pesquisa: O uso de informações para análise  Fundos ImobiliáriosResultado da pesquisa: O uso de informações para análise  Fundos Imobiliários
Resultado da pesquisa: O uso de informações para análise Fundos Imobiliários
 
Google BigQuery
Google BigQueryGoogle BigQuery
Google BigQuery
 
Smp sistema de manutenção planejada
Smp sistema de manutenção planejadaSmp sistema de manutenção planejada
Smp sistema de manutenção planejada
 
Desenvolvimento Ágil de Software
Desenvolvimento Ágil de SoftwareDesenvolvimento Ágil de Software
Desenvolvimento Ágil de Software
 
Groupware
GroupwareGroupware
Groupware
 
Rede Social
Rede SocialRede Social
Rede Social
 
Javascript - boas práticas
Javascript - boas práticasJavascript - boas práticas
Javascript - boas práticas
 

LINQ Mapeamento

  • 1. Análise e Projeto Orientado a Objetos Grupo 4 Mapeamento Objeto-Relacional com LINQ
  • 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.
  • 7. Grupo 4 Mapeamento Objeto-Relacional com LINQ Examples
  • 8. Grupo 4 Mapeamento Objeto-Relacional com LINQ Examples
  • 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