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

时间:2014-07-26 12:12:45

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

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

考虑这种数据类型,它应该可以在对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; }

}

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

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

但是在服务器端,country {对象}和country id属性在Delta<Company>对象中始终为空。

知道如何使用delta / patch来修改外键吗?

1 个答案:

答案 0 :(得分:3)

刚发现OData Delta<t>只更新基本类型或类的属性。尚未支持继承的类,nullables,泛型,整数,派生类型。 (可能在将来的版本中得到支持)。

我已使用反序列化方法从此处提供的示例中解决了此问题:

Link