OData客户端代码生成器,创建和更新包含实体

时间:2015-07-02 19:55:46

标签: c# .net odata asp.net-web-api2

使用的软件:

  • ASP.NET Web API 2.2
  • OData v4.0
  • 用于.NET的OData客户端(v 6.11)

我已经按照this教程创建了一个OData端点:

客户端应用使用OData Client Code Generator从OData端点读取数据。

使用的模型包含具有链接的OrderLine实体的Order实体。 通过向:

发送GET请求,可以从OData端点读取订单实体
https://server/Orders

为了阅读Orderline实体,我已经配置了一个Containment。通过向此Uri发送GET请求,可以阅读订单。

https://server/Orders(1)/OrderLines

从我的客户端应用程序,我可以使用OData客户端代码生成器发送这些请求。创建/更新/删除订单实体就像魅力一样。

阅读订单行实体也像魅力一样:

var orderLines = _serviceClient.Orders.ByKey(orderId).OrderLines.Execute();

我创建了用于创建/更新/删除OrderLine实体的OData EndPoint方法,但问题是我找不到使用客户端代码生成器为订单创建新OrderLine实体的方法。我也不知道如何更新或删除OrderLine实体。

有关如何使用客户端代码生成器向包含方法发送POST / PUT / DELETE请求的任何建议吗?

1 个答案:

答案 0 :(得分:-2)

如果查看http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v3/calling-an-odata-service-from-a-net-client,您可以看到如何发送这些请求。

如何发布: “要向实体集添加新实体,请调用AddToEntitySet,其中EntitySet是实体集的名称。例如,AddToProducts将新产品添加到Products实体集。生成代理时,WCF数据服务会自动创建这些强类型的AddTo方法。“

如何更新: “要更新实体,请调用UpdateObject方法。

调用SaveChanges时会执行更新。默认情况下,WCF发送HTTP MERGE请求。 PatchOnUpdate选项告诉WCF改为发送HTTP PATCH。

如果要替换整个实体(PUT语义),请指定ReplaceOnUpdate选项。这会导致WCF发送HTTP PUT请求。“

示例:container.SaveChanges(SaveChangesOptions.ReplaceOnUpdate);

如何删除 “要删除实体,请调用DeleteObject”

此页面还介绍了

GET PATCH