客户端OData补丁没有先检索对象?

时间:2014-08-04 13:42:56

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

我正在使用C#OData 4客户端,如下所述:

http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v4/create-an-odata-v4-client-app

我有一个产品类,它有ID,名称,价格和类别。我想做类似的事情:

        var product = new ProductService.Models.Product { 
          Id = 2,
          Price = 4
        };

        container.AttachTo("Products", product);
        container.UpdateObject(product);

这样我只能更新price属性并忽略其余所有属性。我可以看到这不会起作用,因为在创建Product对象时Name和Category被创建为null,因此它们将在生成的请求中作为null发送。

有没有办法在没有先检索我想要更新的对象的情况下执行此操作? (我猜测我需要沿着HttpClient路线走下去。)

1 个答案:

答案 0 :(得分:2)

一种解决方法是直接使用HttpClient:

        HttpRequestMessage request = new HttpRequestMessage(new HttpMethod("PATCH"), requestUri);
        request.Content = new StringContent(@"{{""@odata.type"":""#ProductService.Models.Product"",""Price"":3000}}");
        request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
        HttpResponseMessage  response = new HttpClient.SendAsync(request).Result;