【问题标题】:OData Client Code Generator, create and update containment entitiesOData 客户端代码生成器,创建和更新包含实体
【发布时间】:2015-09-20 12:17:37
【问题描述】:

使用的软件:

  • 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 请求发送到包含方法的任何建议?

【问题讨论】:

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


    【解决方案1】:

    如果您查看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"

    GETPATCH 也在此页面上进行了描述。

    【讨论】:

    • 你读过他的问题吗? OData v4 是一项要求。您链接了 OData v3 文档并复制并粘贴了一些文本。 OData v3 甚至不支持遏制...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 2019-09-23
    相关资源
    最近更新 更多