客户端OData补丁不首先检索对象

本文关键字:检索 对象 OData 补丁 客户端 | 更新日期: 2023-09-27 18:16:12

我使用的是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属性而忽略其他属性。我可以看到,这将不起作用,因为在创建产品对象时,名称和类别被创建为空,因此它们将在结果请求中作为空发送。

是否有一种方法可以在不首先检索我想要更新的对象的情况下做到这一点?(我猜我需要走下HttpClient路由)。

客户端OData补丁不首先检索对象

一种解决方法是直接使用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;