Query LINQ to SQL
Le query LINQ to SQL vengono definite utilizzando la stessa sintassi utilizzata in LINQ. La sola differenza riguarda il mapping degli oggetti a cui viene fatto riferimento nelle query, che viene eseguito agli elementi in un database. Per ulteriori informazioni, vedere Introduzione alle query LINQ (C#).
In LINQ to SQL le query create vengono convertite in query SQL equivalenti e inviate al server per l'elaborazione. In particolare l'applicazione utilizza l'API LINQ to SQL per richiedere l'esecuzione di query. Il provider LINQ to SQL trasforma quindi la query in testo SQL e delega l'esecuzione al provider ADO, che restituisce i risultati della query come DataReader. Il provider LINQ to SQL converte i risultati di ADO in una raccolta IQueryable di oggetti utente.
Nella seguente figura viene illustrato questo flusso generale.
Diagramma di esecuzione della query
![]() |
---|
Per la maggior parte dei metodi e degli operatori nei tipi .NET Framework incorporati sono disponibili conversioni dirette in SQL.Quelli che non possono essere convertiti da LINQ generano eccezioni in fase di esecuzione.Per ulteriori informazioni, vedere Mapping dei tipi CLR SQL (LINQ to SQL). |
Nella tabella seguente sono illustrate le similitudini e le differenze tra LINQ e gli elementi delle query LINQ to SQL.
Elemento |
Query LINQ |
Query LINQ to SQL |
---|---|---|
Tipo restituito della variabile locale che contiene la query (per le query che restituiscono sequenze) |
IEnumerable generico |
IQueryable generico |
Specifica dell'origine dati |
Viene utilizzata la clausola From (Visual Basic) o from (C#) |
Idem |
Filtraggio |
Viene utilizzata la clausola Where/where |
Idem |
Raggruppamento |
Viene utilizzata la clausola Group…By/groupby |
Idem |
Selezione (proiezione) |
Viene utilizzata la clausola Select/select |
Idem |
Esecuzione posticipata e immediata |
Idem |
|
Implementazione di join |
Viene utilizzata la clausola Join/join |
Può essere utilizzata la clausola Join/join, ma più efficacemente viene utilizzato l'attributo AssociationAttribute. Per ulteriori informazioni, vedere Esecuzione di una query tra relazioni (LINQ to SQL). |
Esecuzione in modalità remota e locale |
|
Per ulteriori informazioni, vedere Esecuzione di query locale e remota (LINQ to SQL). |
Esecuzione di query mediante trasmissione o memorizzate nella cache |
Non applicabile in un scenario con memoria locale |
|
Vedere anche
Concetti
Introduzione alle query LINQ (C#)
Operazioni di query LINQ di base (C#)
Relazioni tra i tipi nelle operazioni di query LINQ (C#)