Можно ли удалить граф постоянных объектов одной командой, используя WCF Data Services в Silverlight?Я начал с этого пошагового руководства и добавил код для удаления выбранного заказа (который содержит детали):
private void deleteOrder_Click(object sender, RoutedEventArgs e)
{
Order deletedOrder = (Order)ordersGrid.SelectedItem;
// Delete the selected order.
svcContext.DeleteObject(deletedOrder);
// Remove the deleted order from the binding collection.
ordersGrid.SelectedIndex = ordersGrid.SelectedIndex == 0 ? 1 : ordersGrid.SelectedIndex - 1;
ordersBindingCollection.Remove(deletedOrder);
}
Когда я сохраняю изменения на сервере, выдается запрос на удаление:
--batch_2009b119-0747-4019-8974-8ea7dd29963a
Content-Type: multipart/mixed; boundary=changeset_b451aecf-b66d-4f0f-8e6d-8a067646b350
--changeset_b451aecf-b66d-4f0f-8e6d-8a067646b350
Content-Type: application/http
Content-Transfer-Encoding: binary
DELETE http://localhost:55378/PurchasesService.svc/Orders(1) HTTP/1.1
Content-ID: 90
--changeset_b451aecf-b66d-4f0f-8e6d-8a067646b350--
--batch_2009b119-0747-4019-8974-8ea7dd29963a--
Но на стороне базы данных происходит сбой с нарушением ограничения внешнего ключа:
--batchresponse_b6c22c24-17ec-409b-ba91-91784116927d
Content-Type: multipart/mixed; boundary=changesetresponse_41e6e873-a5dd-446d-bda0-99405ba92a63
--changesetresponse_41e6e873-a5dd-446d-bda0-99405ba92a63
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 500 Internal Server Error
Content-ID: 90
Cache-Control: no-cache
DataServiceVersion: 1.0;
Content-Type: application/xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<code></code>
<message xml:lang="uk-UA">An error occurred while processing this request.</message>
</error>
--changesetresponse_41e6e873-a5dd-446d-bda0-99405ba92a63--
--batchresponse_b6c22c24-17ec-409b-ba91-91784116927d--
Я также пытался установить для свойства OnDelete отношения значение Каскад в .edmx
Можно ли сделать такие удаления?Кто должен позаботиться об удалении указанных объектов: клиент или сервер?И сколько запросов на удаление должно быть отправлено на сервер: один или N + 1 (где N - количество деталей данного заказа).Может быть, я упускаю какой-то ключевой момент.Существуют ли учебники WCF Data Services, описывающие удаление графов объектов?