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
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 di IEnumerable<T> da restituire.
L'algoritmo per eseguire la corrispondenza tra le colonne nel risultato della query e i campi o le proprietà nell'oggetto funziona nel modo seguente:
Se un campo o una proprietà viene mappata a un determinato nome di colonna, nel set di risultati è previsto tale nome.
Se non viene mappato un campo o 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 di una corrispondenza senza distinzione tra maiuscole e minuscole.
La query deve restituire tutti i campi e le proprietà registrati dell'oggetto (tranne quelli caricati su base posticipata) se si verificano le condizioni seguenti:
T
è un'entità rilevata in modo esplicito da DataContext.
ObjectTrackingEnabled è true
.
L'entità contiene 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. Tenere presente quanto segue:
Se il numero di oggetti nella matrice è inferiore al numero più elevato identificato nella stringa di comando, viene generata un'eccezione.
Se la matrice contiene oggetti ai quali non viene fatto riferimento nella stringa di comando, non viene generata alcuna eccezione.
Se un parametro è null
, viene convertito in DBNull.Value
.
Restituisce
Insieme di oggetti IEnumerable<T> 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 di elementi contenuti nell'insieme restituito.
Parametri
- query
- String
Query SQL da eseguire.
- parameters
- Object[]
Matrice di parametri da passare al comando. Tenere presente quanto segue:
Se il numero di oggetti nella matrice è inferiore al numero più elevato identificato nella stringa di comando, viene generata un'eccezione.
Se la matrice contiene oggetti ai quali non viene fatto riferimento nella stringa di comando, non viene generata alcuna eccezione.
Se un parametro è null, viene convertito in DBNull.Value
.
Restituisce
Insieme di oggetti restituiti dalla query.
Esempio
Nell'esempio seguente viene illustrato un utilizzo 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 a campi e proprietà nell'oggetto funziona come segue:
Se un campo o una proprietà viene mappata a un determinato nome di colonna, nel set di risultati è previsto tale nome.
Se non viene mappato un campo o 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 vere tutte le condizioni seguenti:
Se
<T>
è un'entità rilevata in modo esplicito da DataContext.ObjectTrackingEnabled è true.
L'entità contiene 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.