如何使用OData.Delta修补/更新外键?

本文关键字:更新 修补 何使用 OData Delta | 更新日期: 2023-09-27 18:15:05

尝试利用System.Web.Http.OData.Delta在ASP中实现PATCH方法。. NET Web API服务,但似乎无法将更改应用于外键关系属性。

考虑这个数据类型,它应该可以在对Web API服务的PATCH请求中更新:

public class Company
{
    public int ID { get; set; }
    // [Required]
    public String Name { get; set; }
    public string Description { get; set; }
    public int ? CountryID { get; set; }
    [ForeignKey("CountryID")]
    public virtual Country Country { get; set; }
}

当我更新名称/描述属性时,一切都很好。但是,当我尝试更新国家Id属性时,我可以看到来自浏览器的以下请求。

CountryID: 3
Description: "e"
ID: 10
Name: "EF" 

但是在服务器端,Delta<Company>对象中的country object和country id属性总是为空。

知道如何使用delta/patch更新外键吗?

如何使用OData.Delta修补/更新外键?

刚刚发现OData Delta<t>只更新基本类型或类的属性。目前还不支持继承类、可空对象、泛型、整数、派生类型。(可能在未来的版本中支持)。

我使用反序列化方法解决了这个问题,这里有一个示例:

链接