是否可以使用 Silverlight 中的 WCF 数据服务通过单个命令删除持久对象图?我从这个演练开始并添加了删除所选订单的代码(其中包含详细信息):
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 内容类型:多部分/混合;边界=changeset_b451aecf-b66d-4f0f-8e6d-8a067646b350 --changeset_b451aecf-b66d-4f0f-8e6d-8a067646b350 内容类型:应用程序/http 内容传输编码:二进制 删除 http://localhost:55378/PurchasesService.svc/Orders(1) HTTP/1.1 内容 ID:90 --changeset_b451aecf-b66d-4f0f-8e6d-8a067646b350-- --batch_2009b119-0747-4019-8974-8ea7dd29963a--
但它在数据库端失败,外键约束违反:
--batchresponse_b6c22c24-17ec-409b-ba91-91784116927d 内容类型:多部分/混合;边界=changesetresponse_41e6e873-a5dd-446d-bda0-99405ba92a63 --changesetresponse_41e6e873-a5dd-446d-bda0-99405ba92a63 内容类型:应用程序/http 内容传输编码:二进制 HTTP/1.1 500 内部服务器错误 内容 ID:90 缓存控制:无缓存 数据服务版本:1.0; 内容类型:应用程序/xml <?xml version="1.0" encoding="utf-8" Standalone="yes"?> <error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"> <代码></代码> <message xml:lang="uk-UA">处理此请求时发生错误。</message> </错误> --changesetresponse_41e6e873-a5dd-446d-bda0-99405ba92a63-- --batchresponse_b6c22c24-17ec-409b-ba91-91784116927d--
我还尝试在 .edmx中将关系的OnDelete属性设置为Cascade
是否可以进行此类删除?谁应该负责删除引用的对象:客户端还是服务器?以及应该向服务器发送多少删除请求:一个或 N+1(其中 N 是给定订单的详细信息数)。也许我错过了一些关键点。是否有任何描述删除对象图的 WCF 数据服务教程?