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:
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.
Сущность имеет первичный ключ.
В противном случае возникает исключение.
Во всех остальных случаях запрос может получить только подмножество отслеживаемых полей и свойств объекта.