SQL SERVER - Como dar DROP em PRIMARY KEY

watch_later 27 de mar de 2014

Introdução e objetivos

Nesta seção, vamos ver os princípios do LINQ e depois ver consultas básicas com LINQ que você sempre precisa usar consultas em seus projetos. Enquanto vemos o básico, vamos também tentar aprender o LINQ para resolver problemas a partir da perspectiva de objetos de negócios de camada intermediárias.

Definindo LINQ

LINQ é um modelo de programação uniforme para qualquer tipo de acesso a dados. LINQ permite consultar e manipular dados idependente de sua fonte de dados. A figura abaixo mostra como o .NET disponibilizar o modelo de programação LINQ e trabalho de maneira uniforme sobre qualquer tipo de fonte de dados. É como uma linguagem de consulta que pode consultar qualquer fonte de dados em qualquer formato. LINQ também oferece segurança completo e verificar em tempo de compilação. LINQ pode servir como uma boa entidade para a camada intermediária. Então ele vai estar entre a interface do usuário e as camadas de acesso a dados.
140x140
Abaixo está um exemplo simples de LINQ. Nós temos uma coleção de objcountries dados a que LINQ é fazer uma consulta com o nome do país "Índia". A collection objcountries pode ser de qualquer fonte de dados: conjunto de dados, DataReader, XML, etc... A figura abaixo mostra como ObjCountries podem ser quaisquer dados. Em seguida, consultamos CountryCode e percorremos ele com um loop foreach
140x140

Como o LINQ nos ajuda com objetos de negócios?

Uma das tarefas tediosas em objetos de negócios está em analisar e pesquisando as coleções de objetos. Por exemplo, considere a figura abaixo onde queremos procurar um país por um valor de ID. O que fazemos é foreach (loop) através da coleção e obter o objeto. Muitos podem argumentar sobre como manter uma chave em um List ou Array. O que mostramos abaixo é apenas um exemplo. Se você quiser pesquisar usando o código do país e o nome, as chaves da List/ Array não vão trabalhar com pesquisas multi-valor.
140x140
Em outras palavras, usando o LINQ, podemos consultar coleções de objetos de negócios e filtrar as coleções usando uma única consulta LINQ.

Você pode explicar como é consulta básica LINQ?

Para entender uma consulta básica para LINQ, vamos fazer um projeto de exemplo pequeno. Vamos pegar os dados dos clientes que tem pedidos.
Customer Name Customer Code City Orders
Jones Roberto 001 São Paulo
  • camiseta
  • meias
Diego Bertti Shiv São Paulo
  • calças
Felipe Lima 003 São Paulo
  • meias
Thiago Oliveira 004 São Paulo
  • tênis
Fizemos os dados um pouco complexos por ter vários pedidos para cada cliente, em outras palavras, temos um para muitos nos relacionamentos.
140x140
Então, vamos criar duas classes: a classe Cliente(Customer) agregada a um conjunto de Pedidos(Orders). Abaixo está a forma como a estrutura de classes vai olhar como para acomodar a um para muitos relacionamentos de clientes e vários pedidos.
140x140
Os múltiplos endereços são a coleção de matriz agregadas dentro da classe cliente. Abaixo está um trecho de código que carrega as coleções do cliente e endereço com dados fornecidos na tabela acima. No exemplo os clientes e seus respectivos pedidos está em hard-code, mas os dados podem ser carregado a partir de um banco de dados ou de uma outra fonte, também.

clsCustomer[] objCustomer = new clsCustomer[]
{
        new clsCustomer{CustomerName="Jones Roberto",customerCode="001",
        City="São Paulo",Orders = new clsOrder[] {new clsOrder{ProductName="camiseta"},new clsOrder{ProductName="meias"}}},
        new clsCustomer{CustomerName="Diego Bertti",customerCode="002",
        City="São Paulo",Orders = new clsOrder[]{new clsOrder{ProductName="calças"}}},
        new clsCustomer{CustomerName="Felipe Lima",customerCode="003",
        City="São Paulo",Orders = new clsOrder[]{new clsOrder{ProductName="meias"}}},
        new clsCustomer{CustomerName="Thiago Oliveira",customerCode="004",
        City="São Paulo",Orders = new clsOrder[]{new clsOrder{ProductName="tênis"}
};

    
Uma consulta básica LINQ parece algo como a query abaixo. Ela começa com o verbo , em seguida apelido, o tipo de dados e os objetos (coleção), ou seja, clsCustomer e objetos obj. objCustomer é a coleção que tem o cliente e os endereços que colocamos na parte superior. Select obj especifica que precisamos de todos os valores que tem em nossa fonte de dados.

        from clsCustomer obj in  objCustomer select obj
        
    
A figura abaixo mostra no lado direito a consulta em LINQ. No lado esquerdo, loop nó a nó (foreach) através da coleção de objetos.
140x140
Fiz um projeto simples que demonstra uma consulta básica LINQ, você pode criar um igual para ver como funciona realmente. A figura abaixo mostra a execução da consulta simples.
140x140

Consulta LINQ para buscar com filtros

Precisamos colocar a cláusula where antes da palavra-chave select.
    
return from clsCustomer Obj in objCustomer where Obj.customerCode == "001" select Obj;

    
A figura abaixo mostra a cláusula where, em ação.
140x140

Consulta LINQ usando Join

Abaixo está um trecho de código LINQ para criar associações(join's) entre coleções de objetos. Neste caso, estamos criando uma join de clientes e pedidos.Se você se lembra, a coleção Order(pedidos) está contida na classe cliente(Customer).
    
 return from clsCustomer ObjCust in objCustomer 
from clsOrder ObjOrder in ObjCust.Orders
select ObjCust;
        
    
A seguir é mostrado o resultado de uma consulta LINQ join:
140x140

Consulta LINQ usando Group By

O trecho de código abaixo mostra como group by é escrito usando LINQ. Você pode ver que criei pela primeira vez uma variável chamada temp do tipo GroupTemp e, em seguida, usei a cláusula Select para devolvê-lo.
    
var GroupCustomers = from ObjCust in objCustomer 
group ObjCust by ObjCust.City into GroupTemp
select new  {GroupTemp.Key,GroupTemp};
        
    
A Imagem abaixo mostra o Group By em uso.
140x140

Consulta LINQ usando Order By para ordernar dados

Order By em LINQ é muito simples. Nós só precisamos inserir orderby antes da consulta seleção.
            
return from clsCustomer ObjCust in objCustomer
orderby ObjCust.City
select ObjCust;
            
        
A figura abaixo mostra clientes ordernando por Cidade.
140x140
Bom galera , ficamos por aqui a abaixo estão os links das postagens da mesma série , espero que seja útil , qualquer dúvida comente , ou mande email para contato@virtualbase.com.br