【问题标题】:How to link two existing items (many-to-many) via the OData HTTP protocol?如何通过 OData HTTP 协议链接两个现有项目(多对多)?
【发布时间】:2023-04-10 12:35:01
【问题描述】:

我正在使用通过 OData 服务端点公开的 EF 数据模型。它具有通过多对多关系连接的 Person 和 Group 实体。

我想通过 OData 添加来自现有人员与现有组的链接,但我一直无法弄清楚如何。 here (link to odata.org) 指定的 OData 协议似乎指定我需要执行以下 HTTP 请求来将 Person #1 链接到 Group #1:

正文如下:

{
    __count: 1,
    results: [{
        uri: "http://localhost:49432/MyService.svc/Groups(1)"
    }]
}

但是,当我这样做时,我收到以下错误:

400 Bad Request
"Missing URI element. For link operations, URI element must be specified."

我不知道缺少什么 URI 元素。我在请求 URI 和有效负载中都提供了...

我也尝试了其他几种方法,但到目前为止都没有成功。有什么建议吗?

谢谢!

【问题讨论】:

    标签: entity-framework many-to-many odata wcf-data-services


    【解决方案1】:

    如果您想做多个链接,请按以下方法操作:

    • 方法:合并
    • URI:“http://localhost:49432/MyService.svc/Persons(1)”

    有效负载应如下所示:

    {
      Groups: [ { __metadata: { uri:"http://localhost:49432/MyService.svc/Groups(1)" },
                { __metadata: { uri:"http://localhost:49432/MyService.svc/Groups(2)" }
      ]
    }
    

    希望这会有所帮助。

    谢谢 普拉提克

    【讨论】:

    • 谢谢!我一直在用 Javascript 做多个 POST... 你知道如何一次删除多个链接吗?
    • 没有办法在一个请求中删除多个,除了尝试将所有删除请求一起批处理。
    • 如何在一个请求中重建所有链接?
    【解决方案2】:

    我没看错,除了请求的正文。它应该更简单:

    { uri: "http://localhost:49432/MyService.svc/Groups(1)" }
    

    甜!

    [编辑]

    仅供参考:使用此方法一次似乎只能创建一个链接。

    【讨论】:

      猜你喜欢
      • 2021-03-02
      • 2012-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多