Sdílet prostřednictvím


DataContext.ExecuteQuery Metoda

Definice

Přetížení

ExecuteQuery(Type, String, Object[])

Provádí 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[])

Provádí 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, který IEnumerable<T> se má vrátit.

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 tento název sloupce v sadě výsledků.

Pokud pole nebo vlastnost nejsou namapovány, očekává se v sadě výsledků sloupec se stejným názvem jako pole nebo vlastnost.

Porovnání se provádí tak, že se nejprve hledá shoda s rozlišováním velkých a malých písmen. Pokud se tato shoda nenajde, provede se následné hledání shody, která nerozlišuje malá a velká písmena.

Dotaz musí vrátit všechna sledované pole a vlastnosti objektu (s výjimkou těch, které jsou načteny odloženě), 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ě dojde k výjimce.

query
String

Dotaz SQL, který se má spustit.

parameters
Object[]

Pole parametrů, které mají být předány 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, na které se v příkazovém řetězci neodkazuje, nevyvolá se žádná výjimka.

Pokud je nullparametr , převede se 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é mají být předány 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, na které se v příkazovém řetězci neodkazuje, nevyvolá se žá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 předávací mechanismus pro případy, kdy LINQ to SQL neposkytuje konkrétní scénář.

Algoritmus pro porovnávání sloupců ve výsledku dotazu s poli a vlastnostmi v objektu funguje takto:

  • Pokud je pole nebo vlastnost namapovaná na konkrétní název sloupce, očekává se tento název sloupce v sadě výsledků.

  • Pokud pole nebo vlastnost nejsou namapovány, očekává se v sadě výsledků sloupec se stejným názvem jako pole nebo vlastnost.

  • Porovnání se provede tak, že se nejprve vyhledá shoda s rozlišováním velkých a malých písmen. Pokud se taková shoda nenajde, provede se následné hledání shody, která nerozlišuje velká a malá písmena.

  • Dotaz musí vrátit všechna sledované pole a vlastnosti objektu (kromě těch, na které se vztahuje odložené načtení), pokud jsou splněny všechny následující podmínky:

    • Pokud <T> je entita explicitně sledována objektem DataContext.

    • ObjectTrackingEnabled má hodnotu true.

    • Entita má primární klíč.

    V opačném případě dojde k výjimce.

  • Ve všech ostatních případech může dotaz načíst pouze podmnožinu sledovaných polí a vlastností objektu.

Platí pro