Consultas LINQ to SQL
Você define consultas LINQ to SQL usando a mesma sintaxe que faria no LINQ. A única diferença é que os objetos referenciados em suas consultas são mapeados para elementos em um banco de dados. Para obter mais informações, consulte Introdução às consultas LINQ (C#).
O LINQ to SQL traduz as consultas que você escreve em consultas SQL equivalentes e as envia para o servidor para processamento. Mais especificamente, seu aplicativo usa a API LINQ to SQL para solicitar a execução da consulta. Em seguida, o provedor LINQ to SQL transforma a consulta em texto SQL e delega a execução ao provedor ADO. O provedor ADO retorna resultados de consulta como um DataReader
arquivo . O provedor LINQ to SQL traduz os resultados do ADO para uma IQueryable coleção de objetos de usuário.
Nota
A maioria dos métodos e operadores em tipos internos do .NET Framework têm traduções diretas para SQL. Aqueles que o LINQ não pode traduzir geram exceções em tempo de execução. Para obter mais informações, consulte Mapeamento de tipo SQL-CLR.
A tabela a seguir mostra as semelhanças e diferenças entre 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 retornam sequências) | Genéricos IEnumerable |
Genéricos IQueryable |
Especificando a fonte de dados | Usa a From cláusula (Visual Basic) ou from (C#) |
Mesma |
Filtragem | Utiliza a Where /where cláusula |
Mesma |
Agrupamento | Utiliza a Group…By /groupby cláusula |
Mesma |
Seleção (Projeto) | Utiliza a Select /select cláusula |
Mesma |
Execução diferida versus execução imediata | Consulte Introdução às consultas LINQ (C#) | Mesma |
Implementação de junções | Utiliza a Join /join cláusula |
Pode usar a Join /join cláusula, mas usa o AssociationAttribute atributo de forma mais eficaz. Para obter mais informações, consulte Consultando entre relacionamentos. |
Execução remota versus local | Para obter mais informações, consulte Execução remota versus execução local. | |
Streaming versus consulta em cache | Não aplicável em um cenário de memória local |