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<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 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)

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

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 не предоставляет определенного сценария.

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

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

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

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

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

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

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

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

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

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

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