silverlight - WCF 数据服务中的级联删除

标签 silverlight wcf wcf-data-services cascade astoria

是否可以使用 Silverlight 中的 WCF 数据服务通过单个命令删除持久对象图?
我从 this walkthrough 开始并添加了删除所选订单的代码(其中包含详细信息):

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


<错误 xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<代码>
处理此请求时出错。

--changesetresponse_41e6e873-a5dd-446d-bda0-99405ba92a63--
--batchresponse_b6c22c24-17ec-409b-ba91-91784116927d--

我也试过设置关系的 OnDelete 属性(property)到级联在 .edmx 中

是否可以进行此类删除?谁应该负责删除引用的对象:客户端还是服务器?以及应该向服务器发送多少个删除请求:1 或 N+1(其中 N 是给定订单的详细信息数量)。也许我错过了一些关键点。是否有任何描述删除对象图的 WCF 数据服务教程?

最佳答案

好极了!我想通了! =D 我今天在同一件事上做了几个小时!

So I didn't set Cascade in the edmx.


你在数据库中设置它

在 SQL Server Management Studio 中:
  • 在数据库图中选择要级联删除的关系
  • 打开属性
  • 展开插入和更新
  • 将删除规则设置为级联。

  • 重新加载/更新您的 Entity Framework 模型。执行此操作时,visual studio 将更新 CSDL/SSDL(无论如何?)。

    Reference from MSDN :
    "当你想在删除父记录时自动删除一个父记录的所有子记录可以指定级联删除规则。强烈建议你在两个概念中指定级联删除规则模型和 数据库 。”

    关于silverlight - WCF 数据服务中的级联删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3423617/

    相关文章:

    silverlight - 深度缩放和Silverlight 4的实时图像切片

    silverlight - XamlParseException - 属性属性的无效属性值 (...)

    c# - 没有添加文本 block ?

    wcf - 在何时何地设置自定义IOperationInvoker?

    wcf-data-services - OData、Atom、Json和WCF数据服务有什么关系

    Silverlight自定义控件继承。重复使用模板?

    c# - 创建从两个实体获取数据的 LINQ 查询

    asp.net - Wcf - 已超出传入消息 (65536) 的最大消息大小配额?

    c# - 网格绑定(bind)列名称

    c# - 展开 WCF 数据服务 (OData) 的投影(选择)