DataContext.ExecuteQuery Метод

Определение

Перегрузки

ExecuteQuery(Type, String, Object[])

Выполняет SQL-запросы непосредственно в базе данных.

ExecuteQuery<TResult>(String, Object[])

Выполняет запросы SQL непосредственно в базе данных и возвращает объекты.

ExecuteQuery(Type, String, Object[])

Выполняет SQL-запросы непосредственно в базе данных.

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

Параметры

elementType
Type

Тип IEnumerable<T>, который должен быть возвращен.

Алгоритм сопоставления столбцов в результате запроса с полями или свойствами в объекте работает, как показано далее. Если поле или свойство сопоставляется с определенным именем столбца, это имя столбца ожидается в наборе результатов.

Если поле или свойство не сопоставляется, столбец с тем же именем, что и поле или свойство, ожидается в наборе результатов.

Сначала в сравнении выполняется поиск совпадения с учетом регистра. Если это совпадение не найдено, следующий поиск выполняется для совпадений без учета регистра.

Запрос должен возвращать все отслеженные поля и свойства объекта (кроме тех, загрузка которых отложена), если выполняются все следующие условия. T является сущностью, явно отслеживаемой DataContext.

ObjectTrackingEnabled имеет значение true.

Сущность имеет первичный ключ.

В противном случае возникает исключение.

query
String

Запрос SQL для выполнения.

parameters
Object[]

Массив параметров для передачи команде. Обратите внимание на следующее поведение. Если количество объектов в массиве меньше, чем наибольшее число команд, определенных в командной строке, создается исключение.

Если массив содержит объекты, на которые нет ссылок в командной строке, исключение не создается.

Если значение параметра равно null, он преобразовывается в DBNull.Value.

Возвращаемое значение

IEnumerable

Коллекция объектов IEnumerable<T>, возвращаемых запросом.

Применяется к

ExecuteQuery<TResult>(String, Object[])

Выполняет запросы SQL непосредственно в базе данных и возвращает объекты.

public:
generic <typename TResult>
 System::Collections::Generic::IEnumerable<TResult> ^ ExecuteQuery(System::String ^ query, ... cli::array <System::Object ^> ^ parameters);
public:
generic <typename TResult>
 where TResult : gcnew() 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);
public System.Collections.Generic.IEnumerable<TResult> ExecuteQuery<TResult> (string query, params object[] parameters) where TResult : new();
member this.ExecuteQuery : string * obj[] -> seq<'Result>
member this.ExecuteQuery : string * obj[] -> seq<'Result (requires 'Result : (new : unit -> 'Result))> (requires 'Result : (new : unit -> 'Result))
Public Function ExecuteQuery(Of TResult) (query As String, ParamArray parameters As Object()) As IEnumerable(Of TResult)
Public Function ExecuteQuery(Of TResult As New) (query As String, ParamArray parameters As Object()) As IEnumerable(Of TResult)

Параметры типа

TResult

Тип элементов в возвращаемой коллекции.

Параметры

query
String

Запрос SQL для выполнения.

parameters
Object[]

Массив параметров для передачи команде. Обратите внимание на следующее поведение. Если количество объектов в массиве меньше, чем наибольшее число команд, определенных в командной строке, создается исключение.

Если массив содержит объекты, на которые нет ссылок в командной строке, исключение не создается.

Если значение параметра равно NULL, он преобразуется в DBNull.Value.

Возвращаемое значение

IEnumerable<TResult>

Коллекция объектов, возвращенных запросом.

Примеры

В следующем примере показано одно использование этого метода:

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

Комментарии

Этот метод является сквозным механизмом для случаев, когда LINQ to SQL не предоставляет конкретный сценарий.

Алгоритм сопоставления столбцов в результате запроса к полям и свойствам в объекте работает следующим образом:

  • Если поле или свойство сопоставляется с определенным именем столбца, это имя столбца ожидается в наборе результатов.

  • Если поле или свойство не сопоставляется, столбец с тем же именем, что и поле или свойство, ожидается в наборе результатов.

  • Сравнение выполняется путем первого поиска совпадения с учетом регистра. Если такое совпадение не найдено, выполняется последующий поиск совпадения без учета регистра.

  • Запрос должен возвращать все отслеживаемые поля и свойства объекта (кроме отложенной загрузки), если выполняются все указанные ниже действия.

    • Если <T> сущность явно отслеживается объектом DataContext.

    • ObjectTrackingEnabled имеет значение true.

    • Сущность имеет первичный ключ.

    В противном случае возникает исключение.

  • Во всех остальных случаях запрос может получить только подмножество отслеживаемых полей и свойств объекта.

Применяется к