c# - 客户端 OData 补丁无需先检索对象?

标签 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);

这样我就可以只更新价格属性并忽略所有其余的属性。我可以看到这不起作用,因为在创建 Product 对象时名称和类别被创建为 null,因此它们将在结果请求中作为 null 发送。

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

最佳答案

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

关于c# - 客户端 OData 补丁无需先检索对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25120132/

相关文章:

.net - 无法在 .net Odata 实现中通过 id 选择实体

odata - 如何使用 web api odata 获取子记录的总和?

c# - .NET 6 区分同一 Controller 类中的路由的最佳方法

c# - 当单个对象属性为字符串时,如何防止将其转换为 DateTime

iis - OWIN OAuthAuthorizationServerProvider 中的 context.Request.User 为空

C# Hook 到方法开始和结束

c# - 多返回语句奇怪?

c# - 是否有更简单的方法来创建 WCF/OData 数据服务查询提供程序?

c# - 如何在Winform中使用CSS格式化 Crystal 报表?

c# - 对于daypilot日历控件,如何在列名称上显示周一到周五而不是日期