Lingua

Come visualizzare i comandi LINQ to SQL

Importante

Non usare System.Data.SqlClient per il nuovo sviluppo. Usare Microsoft.Data.SqlClient per il nuovo codice di accesso ai dati SQL Server. Questi esempi mantengono System.Data.SqlClient perché il provider LINQ to SQL predefinito di .NET Framework lo richiede. La modifica del tipo di connessione da sola non esegue la migrazione di LINQ to SQL.

Usare GetCommand per visualizzare i comandi SQL e altre informazioni.

Esempio

Nell'esempio seguente la finestra della console visualizza l'output della query, seguito dai comandi SQL generati, dal tipo di comandi e dal tipo di connessione.

// Do not use System.Data.SqlClient for new development; use Microsoft.Data.SqlClient.
// LINQ to SQL's built-in provider requires System.Data.SqlClient.
// using System.Data.Common;
Northwnd db = new Northwnd(@"c:\northwnd.mdf");

var q =
    from cust in db.Customers
    where cust.City == "London"
    select cust;

Console.WriteLine("Customers from London:");
foreach (var z in q)
{
    Console.WriteLine($"\t {z.ContactName}");
}

DbCommand dc = db.GetCommand(q);
Console.WriteLine($"\nCommand Text: \n{dc.CommandText}");
Console.WriteLine($"\nCommand Type: {dc.CommandType}");
Console.WriteLine($"\nConnection: {dc.Connection}");

Console.ReadLine();
' Do not use System.Data.SqlClient for new development; use Microsoft.Data.SqlClient.
' LINQ to SQL's built-in provider requires System.Data.SqlClient.
' Imports System.Data.Common

Dim db As New Northwnd("c:\northwnd.mdf")

Dim q = _
From cust In db.Customers _
Where cust.City = "London" _
Select cust

Console.WriteLine("Customers from London:")
For Each z As Customer In q
    Console.WriteLine(vbTab & z.ContactName)
Next

Dim dc As DbCommand = db.GetCommand(q)
Console.WriteLine(vbNewLine & "Command Text: " & vbNewLine & dc.CommandText)
Console.WriteLine(vbNewLine & "Command Type: {0}", dc.CommandType)
Console.WriteLine(vbNewLine & "Connection: {0}", dc.Connection)

Console.ReadLine()

L'output viene visualizzato come segue:

Customers from London:
    Thomas Hardy
    Victoria Ashworth
    Elizabeth Brown
    Ann Devon
    Simon Crowther
    Marie Bertrand
    Hari Kumar
    Dominique Perrier
Command Text:
SELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactT
itle], [t0].[Address], [t0].[City], [t0].[Region], [t0].[PostalCode], [t0].[Coun
try], [t0].[Phone], [t0].[Fax]
FROM [dbo].[Customers] AS [t0]
WHERE [t0].[City] = @p0

Command Type: Text

Connection: System.Data.SqlClient.SqlConnection

Vedere anche