DataContext.ExecuteQuery Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 null
wartość , jest konwertowany na DBNull.Value
wartość .
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.Value
wartość .
Zwraca
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.