Consultas LINQ to SQL
As consultas LINQ to SQL são definidas usando a mesma sintaxe utilizada no LINQ. A única diferença é que os objetos referenciados nas consultas são mapeados para os elementos em uma base de dados. Para obter mais informações, consulte Introdução a Consultas de LINQ (C#).
O LINQ to SQL converte as consultas que você escreve em consultas SQL equivalentes e as envia ao servidor para processamento. Mais especificamente, o aplicativo usa a API do LINQ to SQL para solicitar a execução da consulta. O provedor LINQ to SQL transforma a consulta em texto SQL e delega a execução ao provedor ADO. O provedor ADO retorna os resultados da consulta como um DataReader
. O provedor LINQ to SQL converte os resultados do ADO em uma coleção IQueryable de objetos de usuário.
Observação
A maioria dos métodos e operadores nos tipos internos do .NET Framework têm conversões diretas para SQL. Aqueles que o LINQ não puder converter gerarão exceções em runtime. Para obter mais informações, consulte Mapeamento de tipo SQL-CLR.
A tabela a seguir mostra as semelhanças e as diferenças entre os itens de consulta LINQ e LINQ to SQL.
Item | Consulta LINQ | Consulta LINQ to SQL |
---|---|---|
Tipo de retorno da variável local que contém a consulta (para consultas que as sequências de retorno) | IEnumerable genérico |
IQueryable genérico |
Especificando a fonte de dados | Usa a cláusula From (Visual Basic) ou from (C#) |
Idêntico |
Filtragem | Use a cláusula Where /where |
Idêntico |
Agrupamento | Use a cláusula Group…By /groupby |
Idêntico |
Selecione (se projetar) | Use a cláusula Select /select |
Idêntico |
Execução adiada versus imediata | Consulte Introdução a consultas LINQ (C#) | Idêntico |
Implementar join | Use a cláusula Join /join |
É possível usar a cláusula Join /join , mas usa mais efetivamente o atributoAssociationAttribute. Para obter mais informações, consulte Consultar entre relações. |
Editando contra a execução local | Para obter mais informações, consulte Execução remota versus local. | |
Passar contra consulte armazenado em cachê | Não aplicável em um cenário de memória local |