DataContext.ExecuteQuery Metoda

Definice

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

IEnumerable<TResult>

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.

Platí pro