Freigeben über


DataContext.ExecuteQuery Methode

Definition

Ü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

IEnumerable<TResult>

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.

Gilt für: