DataServiceContext.Execute Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Пересылает запрос в службу данных для выполнения указанного URI.
Перегрузки
Execute<T>(DataServiceQueryContinuation<T>) |
Отправляет запрос в службу данных для получения следующей страницы данных в результатах запроса, разбитых на страницы. |
Execute<TElement>(Uri) |
Пересылает запрос в службу данных для выполнения указанного URI. |
Execute<T>(DataServiceQueryContinuation<T>)
Отправляет запрос в службу данных для получения следующей страницы данных в результатах запроса, разбитых на страницы.
public:
generic <typename T>
System::Data::Services::Client::QueryOperationResponse<T> ^ Execute(System::Data::Services::Client::DataServiceQueryContinuation<T> ^ continuation);
public System.Data.Services.Client.QueryOperationResponse<T> Execute<T> (System.Data.Services.Client.DataServiceQueryContinuation<T> continuation);
member this.Execute : System.Data.Services.Client.DataServiceQueryContinuation<'T> -> System.Data.Services.Client.QueryOperationResponse<'T>
Public Function Execute(Of T) (continuation As DataServiceQueryContinuation(Of T)) As QueryOperationResponse(Of T)
Параметры типа
- T
Тип, возвращаемый запросом.
Параметры
- continuation
- DataServiceQueryContinuation<T>
Объект DataServiceQueryContinuation<T>, представляющий следующую страницу данных для возврата из службы данных.
Возвращаемое значение
Ответ, содержащий следующую страницу данных в результатах запроса.
Исключения
Если возникает ошибка во время выполнения запроса или в случае, если запрос преобразует содержимое ответного сообщения в объекты.
Комментарии
Предоставленный объект DataServiceQueryContinuation<T> содержит URI, который при выполнении возвращает следующую страницу данных в результатах запроса.
Применяется к
Execute<TElement>(Uri)
Пересылает запрос в службу данных для выполнения указанного URI.
public:
generic <typename TElement>
System::Collections::Generic::IEnumerable<TElement> ^ Execute(Uri ^ requestUri);
public System.Collections.Generic.IEnumerable<TElement> Execute<TElement> (Uri requestUri);
member this.Execute : Uri -> seq<'Element>
Public Function Execute(Of TElement) (requestUri As Uri) As IEnumerable(Of TElement)
Параметры типа
- TElement
Тип, возвращаемый запросом.
Параметры
- requestUri
- Uri
URI, на который будет отправлен запрос. URI может быть любым допустимым URI службы данных. Может содержать параметры запроса $.
Возвращаемое значение
Результаты операции запроса.
Исключения
Если ответ на запрос к requestUri
не получен.
Если значение параметра requestUri
равно null
.
Если requestUri
не является допустимым URI для службы данных.
Если возникает ошибка во время выполнения запроса или в случае, если запрос преобразует содержимое ответного сообщения в объекты.
Служба данных возвращает ошибку HTTP 404: ресурс не найден.
Примеры
Этот пример использует цикл do…while
для загрузки сущностей Customers
из разбитых на страницы результатов службы данных. Метод Execute вызывается с использованием URI следующей ссылки для получения следующей страницы данных.
// Create the DataServiceContext using the service URI.
NorthwindEntities context = new NorthwindEntities(svcUri);
DataServiceQueryContinuation<Customer> token = null;
int pageCount = 0;
try
{
// Execute the query for all customers and get the response object.
QueryOperationResponse<Customer> response =
context.Customers.Execute() as QueryOperationResponse<Customer>;
// With a paged response from the service, use a do...while loop
// to enumerate the results before getting the next link.
do
{
// Write the page number.
Console.WriteLine("Page {0}:", pageCount++);
// If nextLink is not null, then there is a new page to load.
if (token != null)
{
// Load the new page from the next link URI.
response = context.Execute<Customer>(token)
as QueryOperationResponse<Customer>;
}
// Enumerate the customers in the response.
foreach (Customer customer in response)
{
Console.WriteLine("\tCustomer Name: {0}", customer.CompanyName);
}
}
// Get the next link, and continue while there is a next link.
while ((token = response.GetContinuation()) != null);
}
catch (DataServiceQueryException ex)
{
throw new ApplicationException(
"An error occurred during query execution.", ex);
}
' Create the DataServiceContext using the service URI.
Dim context = New NorthwindEntities(svcUri)
Dim token As DataServiceQueryContinuation(Of Customer) = Nothing
Dim pageCount = 0
Try
' Execute the query for all customers and get the response object.
Dim response As QueryOperationResponse(Of Customer) = _
CType(context.Customers.Execute(), QueryOperationResponse(Of Customer))
' With a paged response from the service, use a do...while loop
' to enumerate the results before getting the next link.
Do
' Write the page number.
Console.WriteLine("Page {0}:", pageCount + 1)
' If nextLink is not null, then there is a new page to load.
If token IsNot Nothing Then
' Load the new page from the next link URI.
response = CType(context.Execute(Of Customer)(token), _
QueryOperationResponse(Of Customer))
End If
' Enumerate the customers in the response.
For Each customer As Customer In response
Console.WriteLine(vbTab & "Customer Name: {0}", customer.CompanyName)
Next
' Get the next link, and continue while there is a next link.
token = response.GetContinuation()
Loop While token IsNot Nothing
Catch ex As DataServiceQueryException
Throw New ApplicationException( _
"An error occurred during query execution.", ex)
End Try
Комментарии
Метод Execute используется для запроса службы данных с помощью URI. Этот метод создает запрос HTTP GET к службе данных. Указанный URI запроса может быть абсолютным или относительным.
Если requestUri
является абсолютным, этот метод проверяет, указывает ли URI на ту же службу данных, которая указана при создании DataServiceContext. Если requestUri
является относительным, этот метод удаляет все начальные символы косой черты и присоединяет requestUri
к адресу, предоставленному при создании DataServiceContext. Символ косой черты присоединяется после передачи URI в конструктор DataServiceContext, если ни одного из них еще нет.
Когда этот метод возвращает результат, все HTTP-ответы для запроса уже считаны из сетевого потока, но ответы еще не будут обработаны. Определение идентичности или материализация объектов не происходит. Определение идентичности или полная материализация объектов не выполняется для указанной сущности в ответе до выполнения перечисления.
См. также раздел
- Загрузка отложенного содержимого (службы данных WCF)
- Практическое руководство. Загрузка результатов, разбитых на страницы (службы данных WCF)