Поделиться через


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

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

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

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

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

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

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

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

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

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

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

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