所用软件:
- ASP.NET网页应用程序接口2.2
- OData版本4.0
- 用于. NET的OData客户端(版本6.11)
我已经通过以下this教程创建了一个OData端点:
客户端应用使用OData Client Code Generator从OData端点读取数据。
所使用的模型包含一个订单实体,该订单实体具有链接的订单行实体。通过向以下对象发送GET请求,可以从OData终结点读取订单实体:
https://server/Orders
为了读取订单行实体,我已经配置了一个容器。通过向这个URI发送GET请求可以读取订单行。
https://server/Orders(1)/OrderLines
从我的客户端应用程序,我可以发送这些请求使用OData客户端代码生成器。创建/更新/删除订单实体的工作就像一个魅力。
读取订单行实体也像一个符咒:
var orderLines = _serviceClient.Orders.ByKey(orderId).OrderLines.Execute();
我已经创建了OData端点方法来创建/更新/删除OrderLine实体,但问题是我找不到使用客户端代码生成器为订单创建新的OrderLine实体的方法。我也不知道如何更新或删除OrderLine实体。
对于如何使用客户端代码生成器将POST/PUT/DELETE请求发送到包含方法,有什么建议吗?
2条答案
按热度按时间wgx48brx1#
经过一些调查和测试,看起来
DataServiceContext
类上的AddRelatedObject(object source, string sourceProperty, object target)
方法是POST所需的方法,UpdateRelatedObject(object source, string sourceProperty, object target)
方法是PUT/PATCH所需的方法。我没有看到专门用于DELETE的方法,所以我不确定如何完成。但这里有一个如何发布的例子:
以下是相关文档链接:
qc6wkl3g2#
如果您查看http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v3/calling-an-odata-service-from-a-net-client,您可以看到如何发送这些请求。
如何POST:“若要向实体集添加新实体,请调用AddToEntitySet,其中EntitySet是实体集的名称。例如,AddToProducts向Products实体集添加新Product。生成代理时,WCF Data Services会自动创建这些强类型AddTo方法。”
如何更新:“要更新实体,请调用UpdateObject方法。
更新在调用SaveChanges时执行。默认情况下,WCF发送HTTP MERGE请求。PatchOnUpdate选项通知WCF改为发送HTTP PATCH。
如果要替换整个实体(PUT语义),请指定ReplaceOnUpdate选项。这将导致WCF发送HTTP PUT请求。”
示例:容器.保存更改(保存更改选项.更新时替换);
如何删除:“要删除实体,请调用DeleteObject”
本页还介绍了GET和PATCH。