尝试使用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来修改外键吗?
答案 0 :(得分:3)
刚发现OData Delta<t>
只更新基本类型或类的属性。尚未支持继承的类,nullables,泛型,整数,派生类型。 (可能在将来的版本中得到支持)。
我已使用反序列化方法从此处提供的示例中解决了此问题: