DataContext.ExecuteQuery Metoda

Definicja

Przeciążenia

ExecuteQuery(Type, String, Object[])

Wykonuje zapytania SQL bezpośrednio w bazie danych.

ExecuteQuery<TResult>(String, Object[])

Wykonuje zapytania SQL bezpośrednio w bazie danych i zwraca obiekty.

ExecuteQuery(Type, String, Object[])

Wykonuje zapytania SQL bezpośrednio w bazie danych.

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

Parametry

elementType
Type

Typ, który IEnumerable<T> ma zostać zwrócony.

Algorytm dopasowywania kolumn w wyniku zapytania do pól lub właściwości w obiekcie działa w następujący sposób:

Jeśli pole lub właściwość jest mapowane na określoną nazwę kolumny, ta nazwa kolumny jest oczekiwana w zestawie wyników.

Jeśli pole lub właściwość nie jest mapowane, kolumna o takiej samej nazwie jak pole lub właściwość jest oczekiwana w zestawie wyników.

Porównanie jest wykonywane przez wyszukanie najpierw dopasowania uwzględniającego wielkość liter. Jeśli to dopasowanie nie zostanie znalezione, kolejne wyszukiwanie będzie dotyczyło dopasowania bez uwzględniania wielkości liter.

Zapytanie musi zwrócić wszystkie śledzone pola i właściwości obiektu (z wyjątkiem tych, które są ładowane na zasadzie odroczonej), gdy spełnione są wszystkie następujące warunki:

T to jednostka jawnie śledzona przez element DataContext.

ObjectTrackingEnabled to true.

Jednostka ma klucz podstawowy.

W przeciwnym razie zgłaszany jest wyjątek.

query
String

Zapytanie SQL do wykonania.

parameters
Object[]

Tablica parametrów, które mają zostać przekazane do polecenia. Zwróć uwagę na następujące zachowanie:

Jeśli liczba obiektów w tablicy jest mniejsza niż największa liczba zidentyfikowana w ciągu polecenia, zgłaszany jest wyjątek.

Jeśli tablica zawiera obiekty, do których nie odwołuje się ciąg polecenia, nie jest zgłaszany wyjątek.

Jeśli parametr ma nullwartość , jest konwertowany na DBNull.Valuewartość .

Zwraca

IEnumerable<T> Kolekcja obiektów zwracanych przez zapytanie.

Dotyczy

ExecuteQuery<TResult>(String, Object[])

Wykonuje zapytania SQL bezpośrednio w bazie danych i zwraca obiekty.

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)

Parametry typu

TResult

Typ elementów w zwróconej kolekcji.

Parametry

query
String

Zapytanie SQL do wykonania.

parameters
Object[]

Tablica parametrów, które mają zostać przekazane do polecenia. Zwróć uwagę na następujące zachowanie:

Jeśli liczba obiektów w tablicy jest mniejsza niż największa liczba zidentyfikowana w ciągu polecenia, zgłaszany jest wyjątek.

Jeśli tablica zawiera obiekty, do których nie odwołuje się ciąg polecenia, nie jest zgłaszany wyjątek.

Jeśli parametr ma wartość null, jest konwertowany na DBNull.Valuewartość .

Zwraca

IEnumerable<TResult>

Kolekcja obiektów zwracanych przez zapytanie.

Przykłady

W poniższym przykładzie pokazano jedno użycie dla tej metody:

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

Uwagi

Ta metoda jest mechanizmem przekazywania w przypadkach, w których LINQ to SQL nie zapewnia określonego scenariusza.

Algorytm dopasowywania kolumn w wyniku zapytania do pól i właściwości w obiekcie działa w następujący sposób:

  • Jeśli pole lub właściwość jest mapowane na określoną nazwę kolumny, ta nazwa kolumny jest oczekiwana w zestawie wyników.

  • Jeśli pole lub właściwość nie jest mapowane, kolumna o takiej samej nazwie jak pole lub właściwość jest oczekiwana w zestawie wyników.

  • Porównanie jest wykonywane przez pierwsze wyszukiwanie dopasowania uwzględniającego wielkość liter. Jeśli takie dopasowanie nie zostanie znalezione, kolejne wyszukiwanie będzie dotyczyło dopasowania bez uwzględniania wielkości liter.

  • Zapytanie musi zwrócić wszystkie śledzone pola i właściwości obiektu (oprócz tych podlegających odroczonemu ładowaniu), gdy spełnione są wszystkie następujące warunki:

    • Jeśli <T> jednostka jest jawnie śledzona przez element DataContext.

    • ObjectTrackingEnabled ma wartość true.

    • Jednostka ma klucz podstawowy.

    W przeciwnym razie zgłaszany jest wyjątek.

  • We wszystkich innych przypadkach zapytanie może pobrać tylko podzbiór śledzonych pól i właściwości obiektu.

Dotyczy