DataContext.ExecuteQuery Metodo

Definizione

Overload

Nome Descrizione
ExecuteQuery(Type, String, Object[])

Esegue query SQL direttamente nel database.

ExecuteQuery<TResult>(String, Object[])

Esegue query SQL direttamente nel database e restituisce oggetti .

ExecuteQuery(Type, String, Object[])

Esegue query SQL direttamente nel database.

public:
 System::Collections::IEnumerable ^ ExecuteQuery(Type ^ elementType, System::String ^ query, ... cli::array <System::Object ^> ^ parameters);
public System.Collections.IEnumerable ExecuteQuery(Type elementType, string query, params object[] parameters);
member this.ExecuteQuery : Type * string * obj[] -> System.Collections.IEnumerable
Public Function ExecuteQuery (elementType As Type, query As String, ParamArray parameters As Object()) As IEnumerable

Parametri

elementType
Type

Tipo dell'oggetto IEnumerable<T> da restituire.

L'algoritmo per la corrispondenza delle colonne nel risultato della query a campi o proprietà nell'oggetto funziona come segue:

Se viene eseguito il mapping di un campo o di una proprietà a un nome di colonna specifico, tale nome di colonna è previsto nel set di risultati.

Se non viene eseguito il mapping di un campo o di una proprietà, nel set di risultati è prevista una colonna con lo stesso nome del campo o della proprietà.

Il confronto viene eseguito cercando prima una corrispondenza con distinzione tra maiuscole e minuscole. Se questa corrispondenza non viene trovata, viene eseguita una ricerca successiva per una corrispondenza senza distinzione tra maiuscole e minuscole.

La query deve restituire tutti i campi e le proprietà rilevati dell'oggetto (ad eccezione di quelli caricati su base posticipata) quando tutte le condizioni seguenti sono vere:

T è un'entità rilevata in modo esplicito da DataContext.

ObjectTrackingEnabled è true.

L'entità ha una chiave primaria.

In caso contrario, viene generata un'eccezione.

query
String

Query SQL da eseguire.

parameters
Object[]

Matrice di parametri da passare al comando. Nota il seguente comportamento:

Se il numero di oggetti nella matrice è minore del numero più alto identificato nella stringa di comando, viene generata un'eccezione.

Se la matrice contiene oggetti a cui non viene fatto riferimento nella stringa di comando, non viene generata alcuna eccezione.

Se un parametro è null, viene convertito in DBNull.Value.

Valori restituiti

Raccolta IEnumerable<T> di oggetti restituiti dalla query.

Si applica a

ExecuteQuery<TResult>(String, Object[])

Esegue query SQL direttamente nel database e restituisce oggetti .

public:
generic <typename TResult>
 System::Collections::Generic::IEnumerable<TResult> ^ ExecuteQuery(System::String ^ query, ... cli::array <System::Object ^> ^ parameters);
public System.Collections.Generic.IEnumerable<TResult> ExecuteQuery<TResult>(string query, params object[] parameters);
member this.ExecuteQuery : string * obj[] -> seq<'Result>
Public Function ExecuteQuery(Of TResult) (query As String, ParamArray parameters As Object()) As IEnumerable(Of TResult)

Parametri di tipo

TResult

Tipo degli elementi nella raccolta restituita.

Parametri

query
String

Query SQL da eseguire.

parameters
Object[]

Matrice di parametri da passare al comando. Nota il seguente comportamento:

Se il numero di oggetti nella matrice è minore del numero più alto identificato nella stringa di comando, viene generata un'eccezione.

Se la matrice contiene oggetti a cui non viene fatto riferimento nella stringa di comando, non viene generata alcuna eccezione.

Se un parametro è Null, viene convertito in DBNull.Value.

Valori restituiti

IEnumerable<TResult>

Raccolta di oggetti restituiti dalla query.

Esempio

L'esempio seguente mostra un uso per questo metodo:

var customers = db.ExecuteQuery<Customer>(@"SELECT CustomerID, CompanyName, ContactName, ContactTitle,
   Address, City, Region, PostalCode, Country, Phone, Fax
   FROM   dbo.Customers
   WHERE  City = {0}", "London");

foreach (Customer c in customers)
    Console.WriteLine(c.ContactName);
Dim customers = db.ExecuteQuery(Of Customer)("SELECT CustomerID, _
    CompanyName, ContactName, ContactTitle, _
   Address, City, Region, PostalCode, Country, Phone, Fax _
   FROM dbo.Customers _
WHERE City = {0}", "London")

For Each c As Customer In customers
    Console.WriteLine(c.ContactName)
Next

Commenti

Questo metodo è un meccanismo pass-through per i casi in cui LINQ to SQL non fornisce per uno scenario specifico.

L'algoritmo per la corrispondenza delle colonne nel risultato della query ai campi e alle proprietà nell'oggetto funziona come segue:

  • Se viene eseguito il mapping di un campo o di una proprietà a un nome di colonna specifico, tale nome di colonna è previsto nel set di risultati.

  • Se non viene eseguito il mapping di un campo o di una proprietà, nel set di risultati è prevista una colonna con lo stesso nome del campo o della proprietà.

  • Il confronto viene eseguito cercando prima una corrispondenza con distinzione tra maiuscole e minuscole. Se tale corrispondenza non viene trovata, viene eseguita una ricerca successiva per una corrispondenza senza distinzione tra maiuscole e minuscole.

  • La query deve restituire tutti i campi e le proprietà rilevati dell'oggetto (a parte quelli soggetti al caricamento posticipato) quando sono soddisfatte tutte le condizioni seguenti:

    • Se <T> è un'entità rilevata in modo esplicito da DataContext.

    • ObjectTrackingEnabled è true.

    • L'entità ha una chiave primaria.

    In caso contrario, viene generata un'eccezione.

  • In tutti gli altri casi, la query può recuperare solo un subset dei campi e delle proprietà rilevati per l'oggetto.

Si applica a