DataContext.ExecuteQuery Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přetížení
| Name | Description |
|---|---|
| ExecuteQuery(Type, String, Object[]) |
Spouští dotazy SQL přímo v databázi. |
| ExecuteQuery<TResult>(String, Object[]) |
Provádí dotazy SQL přímo v databázi a vrací objekty. |
ExecuteQuery(Type, String, Object[])
Spouští dotazy SQL přímo v databázi.
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 vrácené hodnoty IEnumerable<T> .
Algoritmus pro porovnávání sloupců ve výsledku dotazu s poli nebo vlastnostmi v objektu funguje takto:
Pokud je pole nebo vlastnost namapovaná na konkrétní název sloupce, očekává se v sadě výsledků tento název sloupce.
Pokud není namapováno pole nebo vlastnost, očekává se ve sadě výsledků sloupec se stejným názvem jako pole nebo vlastnost.
Porovnání provedeme tak, že nejprve vyhledáte shodu s rozlišováním velkých a malých písmen. Pokud se tato shoda nenajde, dojde k následnému hledání shody bez rozlišování velkých a malých písmen.
Dotaz musí vrátit všechna sledované pole a vlastnosti objektu (s výjimkou těch, které jsou načteny odloženým základem), pokud jsou splněny všechny následující podmínky:
T je entita, kterou DataContextexplicitně sleduje .
ObjectTrackingEnabled je true.
Entita má primární klíč.
V opačném případě je vyvolán výjimka.
- query
- String
Dotaz SQL, který se má spustit.
- parameters
- Object[]
Pole parametrů, které se mají předat příkazu. Všimněte si následujícího chování:
Pokud je počet objektů v poli menší než nejvyšší číslo identifikované v příkazovém řetězci, vyvolá se výjimka.
Pokud pole obsahuje objekty, které nejsou odkazovány v příkazovém řetězci, není vyvolán žádná výjimka.
Pokud je nullparametr , je převeden na DBNull.Value.
Návraty
Kolekce IEnumerable<T> objektů vrácených dotazem.
Platí pro
ExecuteQuery<TResult>(String, Object[])
Provádí dotazy SQL přímo v databázi a vrací objekty.
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 prvků ve vrácené kolekci.
Parametry
- query
- String
Dotaz SQL, který se má spustit.
- parameters
- Object[]
Pole parametrů, které se mají předat příkazu. Všimněte si následujícího chování:
Pokud je počet objektů v poli menší než nejvyšší číslo identifikované v příkazovém řetězci, vyvolá se výjimka.
Pokud pole obsahuje objekty, které nejsou odkazovány v příkazovém řetězci, není vyvolán žádná výjimka.
Pokud má parametr hodnotu null, převede se na DBNull.Value.
Návraty
Kolekce objektů vrácených dotazem.
Příklady
Následující příklad ukazuje jedno použití pro tuto metodu:
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
Poznámky
Tato metoda je průchozí mechanismus pro případy, kdy LINQ to SQL neposkytuje pro konkrétní scénář.
Algoritmus pro porovnávání sloupců ve výsledku dotazu na pole a vlastnosti v objektu funguje takto:
Pokud je pole nebo vlastnost namapovaná na konkrétní název sloupce, očekává se v sadě výsledků tento název sloupce.
Pokud není namapováno pole nebo vlastnost, očekává se ve sadě výsledků sloupec se stejným názvem jako pole nebo vlastnost.
Porovnání provedeme tak, že nejprve vyhledáte shodu s rozlišováním velkých a malých písmen. Pokud se taková shoda nenajde, dojde k následnému hledání shody bez rozlišování velkých a malých písmen.
Dotaz musí vrátit všechna sledované pole a vlastnosti objektu (kromě těch, které podléhají odložené načítání), pokud jsou splněny všechny následující podmínky:
Je-li
<T>entita explicitně sledována DataContext.ObjectTrackingEnabled je true.
Entita má primární klíč.
V opačném případě je vyvolán výjimka.
Ve všech ostatních případech může dotaz načíst pouze podmnožinu sledovaných polí a vlastností objektu.