有没有办法通过OData v4中的一个PATCH请求来更新实体属性并添加对它的引用

Is there way to update an entity properties and add a reference to it through one single PATCH-request in OData v4?

本文关键字:更新 请求 PATCH 实体 属性 引用 添加 一个 OData v4 有没有      更新时间:2023-09-26

在支持OData v2的WCFService上下文中,我能够执行单个MERGE请求,该请求将更改实体的属性值及其拥有的引用(通过请求负载的__metadata对象)。

我在OData v4和CreateRef技术中读到过$ref请求,但它将花费两个请求。一个用于更改实体的特性值,另一个用于修改实体引用。

有没有一种方法可以在支持OData v4的WebAPI中在一个请求中修补实体并编辑其引用?

如果您有1:n关系,您可以很容易地在请求中设置外键。但是,您的模型必须提供指向外键的链接。下面是一个示例模型(代码优先):

public class Project
{
    public int ProjectId { get; set; }
    public string Name { get; set; }
    public int ManagerId { get; set; }
    [ForeignKey("ManagerId")]
    public Person Manager { get; set; }
}

在m:n关系中,这是不可能的,因为它的设计(EF会自动创建关系表。)。但是,您可以使用自定义操作自行实现关系构建。