Condividi tramite


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

Query LINQ to SQL

NotaNota

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

Vedere Introduzione alle query LINQ (C#)

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#)

Altre risorse

Concetti relativi alle query in LINQ to SQL