DataContext.ExecuteQuery Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Überlädt
ExecuteQuery(Type, String, Object[]) |
Führt SQL-Abfragen direkt in der Datenbank aus. |
ExecuteQuery<TResult>(String, Object[]) |
Führt SQL-Abfragen direkt in der Datenbank aus und gibt Objekte zurück. |
ExecuteQuery(Type, String, Object[])
Führt SQL-Abfragen direkt in der Datenbank aus.
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
Parameter
- elementType
- Type
Der IEnumerable<T>-Typ für die Rückgabe.
Der Algorithmus für Vergleiche von Spalten im Ergebnis der Abfrage und Feldern oder Eigenschaften im Objekt funktioniert folgendermaßen:
Wenn ein Feld oder eine Eigenschaft einem bestimmten Spaltennamen zugeordnet werden, wird der Spaltenname im Resultset erwartet.
Wenn ein Feld oder eine Eigenschaft nicht zugeordnet werden, wird im Resultset eine Spalte mit dem gleichen Namen wie das Feld oder die Eigenschaft erwartet.
Der Vergleich wird ausgeführt, indem zuerst unter Beachtung der Groß-/Kleinschreibung nach einer Übereinstimmung gesucht wird. Wenn dabei keine Übereinstimmung gefunden wird, wird die Suche erneut ausgeführt, dieses Mal jedoch, ohne die Groß- und Kleinschreibung zu beachten.
Die Abfrage muss alle überwachten Felder und Eigenschaften des Objekts zurückgeben (mit Ausnahme derer, die mit Verzögerung geladen werden), wenn alle nachfolgend aufgeführten Bedingungen erfüllt sind:
T
ist eine Entität, die DataContextexplizit von nachverfolgt wird.
ObjectTrackingEnabled ist true
.
Die Entität weist einen Primärschlüssel auf.
Andernfalls wird eine Ausnahme ausgelöst.
- query
- String
Die SQL-Abfrage, die ausgeführt werden soll.
- parameters
- Object[]
Das Parameterarray, das an den Befehl übergeben werden soll. Beachten Sie Folgendes:
Wenn die Anzahl der Objekte im Array geringer ist als die höchste in der Befehlszeichenfolge identifizierte Anzahl, wird eine Ausnahme ausgelöst.
Wenn das Array Objekte enthält, auf die in der Befehlszeichenfolge nicht verwiesen wird, wird keine Ausnahme ausgelöst.
Wenn ein Parameter null
ist, wird dieser in DBNull.Value
konvertiert.
Gibt zurück
Eine IEnumerable<T>-Auflistung von Objekten, die von der Abfrage zurückgegeben wird.
Gilt für:
ExecuteQuery<TResult>(String, Object[])
Führt SQL-Abfragen direkt in der Datenbank aus und gibt Objekte zurück.
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)
Typparameter
- TResult
Der Typ der Elemente in der zurückgegebenen Auflistung.
Parameter
- query
- String
Die SQL-Abfrage, die ausgeführt werden soll.
- parameters
- Object[]
Das Parameterarray, das an den Befehl übergeben werden soll. Beachten Sie Folgendes:
Wenn die Anzahl der Objekte im Array geringer ist als die höchste in der Befehlszeichenfolge identifizierte Anzahl, wird eine Ausnahme ausgelöst.
Wenn das Array Objekte enthält, auf die in der Befehlszeichenfolge nicht verwiesen wird, wird keine Ausnahme ausgelöst.
NULL-Parameter werden in DBNull.Value
konvertiert.
Gibt zurück
Eine Auflistung von der Abfrage zurückgegebener Objekte.
Beispiele
Das folgende Beispiel zeigt eine Verwendung für diese Methode:
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
Hinweise
Diese Methode ist ein Passthroughmechanismus für Fälle, in denen LINQ to SQL kein bestimmtes Szenario bereitstellt.
Der Algorithmus für übereinstimmende Spalten im Ergebnis der Abfrage zu Feldern und Eigenschaften im Objekt funktioniert wie folgt:
Wenn ein Feld oder eine Eigenschaft einem bestimmten Spaltennamen zugeordnet werden, wird der Spaltenname im Resultset erwartet.
Wenn ein Feld oder eine Eigenschaft nicht zugeordnet werden, wird im Resultset eine Spalte mit dem gleichen Namen wie das Feld oder die Eigenschaft erwartet.
Der Vergleich wird durchgeführt, indem zuerst nach einer Übereinstimmung zwischen Groß- und Kleinschreibung gesucht wird. Wenn eine solche Übereinstimmung nicht gefunden wird, wird eine nachfolgende Suche nach einer Übereinstimmung ohne Beachtung der Groß-/Kleinschreibung durchgeführt.
Die Abfrage muss alle nachverfolgten Felder und Eigenschaften des Objekts zurückgeben (mit Ausnahme derjenigen, die dem verzögerten Laden unterliegen), wenn alle folgenden Werte zutrifft:
Wenn
<T>
eine Entität ist, die DataContextexplizit von nachverfolgt wird.ObjectTrackingEnabled ist true.
Die Entität weist einen Primärschlüssel auf.
Andernfalls wird eine Ausnahme ausgelöst.
In allen anderen Fällen kann die Abfrage nur eine Teilmenge der nachverfolgten Felder und Eigenschaften für das Objekt abrufen.