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