C# 4.0 限制在ODATA4更新中发送的属性

C# 4.0 限制在ODATA4更新中发送的属性,c#-4.0,odata,C# 4.0,Odata,当我试图更新对象上的a属性(AvailableQuantity),然后通过ODATA(使用ODATA v4客户端代码生成器)进行更新时。问题是,当我发送请求(下面的Fiddler输出)时,我收到一个错误,说“只能更新AvailableEquality”。有没有办法指定哪些属性可以更新(可能通过属性?) 下面是Fiddler的原始响应 HTTP/1.1 400 Bad Request Content-Length: 88 Content-Type: application/json; odata.

当我试图更新对象上的a属性(AvailableQuantity),然后通过ODATA(使用ODATA v4客户端代码生成器)进行更新时。问题是,当我发送请求(下面的Fiddler输出)时,我收到一个错误,说“只能更新AvailableEquality”。有没有办法指定哪些属性可以更新(可能通过属性?)

下面是Fiddler的原始响应

HTTP/1.1 400 Bad Request
Content-Length: 88
Content-Type: application/json; odata.metadata=minimal; charset=utf-8
Server: Microsoft-IIS/7.5
OData-Version: 4.0
X-ServerName: **********
Date: Wed, 16 Dec 2015 15:50:52 GMT

{
  "error":{
    "code":"","message":"Only AvailableQuantity may be updated."
  }
}
我已经能够更新其他对象的属性,因此我知道身份验证(OAUTH2)和基本类正在工作

有人对我可以试试什么有什么想法吗

非常感谢


Jonathan

好的,我从这篇文章中意识到我做错了什么()。在更改对象之前,我使用这样的代码获取对象:

var product = target.Products.Expand("DCQuantities").Where(p => p.Sku == "JRSTEST1").First();
product.First().DCQuantities[0].AvailableQuantity = 42;
target.UpdateObject(product.DCQuantities[0]); 
var result = target.SaveChanges();
我需要做的是将查询结果分配给DataServiceCollection()类,该类将跟踪实际更改的内容,并为我管理整个更新

var product = new DataServiceCollection<Product>(target.Products.Expand("DCQuantities").Where(p => p.Sku == "JRSTEST1"));
product.First().DCQuantities[0].AvailableQuantity = 42;
var result = target.SaveChanges();
var-product=new-DataServiceCollection(target.Products.Expand(“dcamounts”)。其中(p=>p.Sku==“jrst1”);
product.First().dcamounts[0]。AvailableEquality=42;
var result=target.SaveChanges();

使用Fiddler,我已将有效负载更改为:{“@odata.type”:“#ChannelAdvisor.RestApi.V1.Models.DCQuantity”,“availablequality”:30}并重新发送它,它可以工作,所以我需要知道如何让客户端输出它?
var product = new DataServiceCollection<Product>(target.Products.Expand("DCQuantities").Where(p => p.Sku == "JRSTEST1"));
product.First().DCQuantities[0].AvailableQuantity = 42;
var result = target.SaveChanges();