Пакетные операции (службы WCF Data Services)
Службы Протокол Open Data Protocol (OData) поддерживают пакетную обработку запросов к службам на основе OData . Дополнительные сведения см. в разделе OData: пакетная обработка. Каждая операция Службы WCF Data Services , которая использует контекст DataServiceContext, например для выполнения запроса или сохранения изменений, порождает отдельный запрос, отправляемый службе данных. Для создания логической области видимости для набора операций можно явно определить пакеты операций. При этом все операции в пакете гарантированно отправляются в службу данных в виде одного HTTP-запроса, что позволяет серверу обработать их единым блоком и сокращает количество циклов обращений в службу данных.
Операции пакетных запросов
Для выполнения нескольких запросов в одном пакете необходимо создать каждый запрос пакета в виде отдельного экземпляра класса DataServiceRequest. При создании запроса таким способом сам он определяется как URI и соответствует правилам адресации ресурсов. Дополнительные сведения см. в разделе Addressing Resources (WCF Data Services). Пакетные запросы отправляются в службу данных при вызове метода ExecuteBatch, содержащего объекты запросов. Этот метод возвращает объект DataServiceResponse, представляющий собой коллекцию объектов QueryOperationResponse, каждый из которых содержит ответ на индивидуальный запрос в пакете, то есть либо коллекцию возвращаемых объектов, либо сведения об ошибке. Если отдельная операция в пакете завершается с ошибкой, сведения об ошибке возвращаются в объекте QueryOperationResponse для конкретной операции, в то время как оставшиеся операции все равно выполняются. Дополнительные сведения см. в разделе Как выполнять запросы в пакете (службы данных WCF Data Services).
Пакетные запросы также могут быть выполнены асинхронно. Дополнительные сведения см. в разделе Асинхронные операции (службы WCF Data Services).
Пакетирование операции SaveChanges
При вызове метода SaveChanges все изменения, отслеженные контекстом, преобразуются в операции на основе REST, которые отправляются в качестве запросов службе OData . По умолчанию эти изменения не отправляются в одном сообщении запроса. Чтобы принудительно отправить все изменения в одном запросе, необходимо вызвать метод SaveChanges и включить значение Batch в перечисление SaveChangesOptions, передаваемое этому методу.
Можно также сохранить пакет изменений асинхронно. Дополнительные сведения см. в разделе Асинхронные операции (службы WCF Data Services).