DataContext.ExecuteQuery Methode

Definition

Überlädt

Name Beschreibung
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 Typ des IEnumerable<T> zurückzugebenden Werts.

Der Algorithmus zum Abgleichen von Spalten im Ergebnis der Abfrage mit Feldern oder Eigenschaften im Objekt funktioniert wie folgt:

Wenn ein Feld oder eine Eigenschaft einem bestimmten Spaltennamen zugeordnet ist, wird dieser Spaltenname im Resultset erwartet.

Wenn ein Feld oder eine Eigenschaft nicht zugeordnet ist, wird eine Spalte mit demselben Namen wie das Feld oder die Eigenschaft im Resultset erwartet.

Der Vergleich wird durchgeführt, indem zuerst nach einer Übereinstimmung zwischen Groß- und Kleinschreibung gesucht wird. Wenn diese Übereinstimmung nicht gefunden wird, wird eine nachfolgende Suche nach einer Übereinstimmung ohne Groß-/Kleinschreibung durchgeführt.

Die Abfrage muss alle nachverfolgten Felder und Eigenschaften des Objekts zurückgeben (mit Ausnahme derjenigen, die auf verzögerter Basis geladen werden), wenn alle folgenden Bedingungen erfüllt sind:

T ist eine Entität, die explizit von der DataContext.

ObjectTrackingEnabled ist true.

Die Entität weist einen Primärschlüssel auf.

Andernfalls wird eine Ausnahme ausgelöst.

query
String

Die auszuführende SQL-Abfrage.

parameters
Object[]

Das Array von Parametern, die an den Befehl übergeben werden sollen. Beachten Sie das folgende Verhalten:

Wenn die Anzahl der Objekte im Array kleiner als die höchste in der Befehlszeichenfolge identifizierte Zahl ist, 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 lautet null, wird er in DBNull.Value.

Gibt zurück

Eine IEnumerable<T> Auflistung von Objekten, die von der Abfrage zurückgegeben werden.

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 auszuführende SQL-Abfrage.

parameters
Object[]

Das Array von Parametern, die an den Befehl übergeben werden sollen. Beachten Sie das folgende Verhalten:

Wenn die Anzahl der Objekte im Array kleiner als die höchste in der Befehlszeichenfolge identifizierte Zahl ist, 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 er in DBNull.Value.

Gibt zurück

IEnumerable<TResult>

Eine Auflistung von Objekten, die von der Abfrage zurückgegeben werden.

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 Pass-Through-Mechanismus für Fälle, in denen LINQ to SQL kein bestimmtes Szenario bereitstellt.

Der Algorithmus zum Abgleichen von Spalten im Ergebnis der Abfrage mit Feldern und Eigenschaften im Objekt funktioniert wie folgt:

  • Wenn ein Feld oder eine Eigenschaft einem bestimmten Spaltennamen zugeordnet ist, wird dieser Spaltenname im Resultset erwartet.

  • Wenn ein Feld oder eine Eigenschaft nicht zugeordnet ist, wird eine Spalte mit demselben Namen wie das Feld oder die Eigenschaft im Resultset 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 Groß-/Kleinschreibung durchgeführt.

  • Die Abfrage muss alle nachverfolgten Felder und Eigenschaften des Objekts zurückgeben (abgesehen von denen, die verzögertes Laden unterliegen), wenn alle folgenden Erfüllt sind:

    • Wenn <T> es sich um eine Entität handelt, die explizit von der DataContext.

    • 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: