Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
LINQ to SQL converte le query scritte in query SQL con parametri (in formato testo) e le invia al server SQL per l'elaborazione.
SQL non può eseguire l'ampia gamma di metodi che potrebbero essere disponibili localmente per l'applicazione. LINQ to SQL tenta di convertire questi metodi locali in operazioni e funzioni equivalenti disponibili all'interno dell'ambiente SQL. La maggior parte dei metodi e degli operatori nei tipi predefiniti di .NET Framework include traduzioni dirette ai comandi SQL. Alcuni possono essere prodotti dalle funzioni disponibili. Quelli che non possono essere generati generano eccezioni di runtime. Per ulteriori informazioni, consultare Mapping dei tipi SQL-CLR.
Nei casi in cui una query LINQ to SQL non è sufficiente per un'attività specializzata, è possibile usare il ExecuteQuery metodo per eseguire una query SQL e quindi convertire il risultato della query direttamente in oggetti.
Esempio 1
Nell'esempio seguente si supponga che i dati per la Customer classe siano distribuiti su due tabelle (customer1 e customer2). La query restituisce una sequenza di Customer oggetti.
Northwnd db = new Northwnd(@"c:\northwnd.mdf");
IEnumerable<Customer> results = db.ExecuteQuery<Customer>
(@"SELECT c1.custid as CustomerID, c2.custName as ContactName
FROM customer1 as c1, customer2 as c2
WHERE c1.custid = c2.custid"
);
Dim db As New Northwnd("c:\northwnd.mdf")
Dim results As IEnumerable(Of Customer) = _
db.ExecuteQuery(Of Customer) _
("SELECT c1.custID as CustomerID," & _
"c2.custName as ContactName" & _
"FROM customer1 AS c1, customer2 as c2" & _
"WHERE c1.custid = c2.custid")
Se i nomi delle colonne nei risultati tabulari corrispondono alle proprietà della colonna della classe di entità, LINQ to SQL crea gli oggetti da qualsiasi query SQL.
Esempio 2
Il ExecuteQuery metodo consente anche di specificare parametri. Usare codice come il seguente per eseguire una query con parametri.
Northwnd db = new Northwnd(@"c:\northwnd.mdf");
IEnumerable<Customer> results = db.ExecuteQuery<Customer>
("SELECT contactname FROM customers WHERE city = {0}",
"London");
Dim db As New Northwnd("c:\northwnd.mdf")
Dim results As IEnumerable(Of Customer) = _
db.ExecuteQuery(Of Customer) _
("SELECT contactname FROM customers WHERE city = {0}, 'London'")
I parametri vengono espressi nel testo della query usando la stessa notazione curly usata da Console.WriteLine() e String.Format(). Infatti, String.Format() viene realmente chiamato sulla stringa di query fornita, sostituendo i parametri tra parentesi graffe con nomi di parametri generati, ad esempio @p0, @p1 ..., @p(n).