gpt4 book ai didi

c# - 从客户端的一个请求中删除所有相关的 OData 实体

转载 作者:行者123 更新时间:2023-11-30 19:26:15 27 4
gpt4 key购买 nike

以 Northwind 数据库为例,每个 Customer 都有一个 Orders 集合。我想在一个请求中删除特定客户及其所有订单之间的所有引用。

看起来我可以用 DELETE 做到这一点(基于 spec )http://services.odata.org/V4/Northwind/Northwind.svc/Customers('ANTON')/Orders 但我想知道客户端库是否支持这个。

我将 Microsoft.OData.Client 用于 C# 客户端库,将 Apache Olingo (v4) 用于 Java,将 BreezeJS 用于 JavaScript。非常感谢其中任何一个示例。

编辑:澄清我只是删除引用,而不是实际删除实体本身。

最佳答案

正如swl10所说,需要依次删除每一个引用。但是 OData 支持 $batch。您可以将所有删除方法放在一个请求中。代码如下:

DemoService dsc = new DemoService(new Uri("http://services.odata.org/V4/OData/(S(ut2byeiaglm424a0pbovpo33))/OData.svc/"));
var product = dsc.Products.Expand("Categories").Where(p => p.ID == 1).Single();

foreach (var c in product.Categories)
{
dsc.DeleteLink(product, "Categories", c);
}
dsc.SaveChanges(SaveChangesOptions.BatchWithSingleChangeset);

你会发现这个SaveChanges只会发送一个请求$batch。在有效负载中,有两个内部 DELETE 请求。

关于c# - 从客户端的一个请求中删除所有相关的 OData 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24213664/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com