DataContext.ExecuteQuery Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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
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.