OData Client中DataServiceQuery中的扩展错误

问题描述 投票:6回答:1

我正在如下测试OData .Net客户端:

static void Main(string[] args)
    {
        var dataServiceContext = new Container(new Uri("http://localhost.fiddler:6851/"));

        var selectedOrders = from order in dataServiceContext.Orders.Expand("OrderDetails")
                                where order.OrderId==1
                                select order;

        DataServiceCollection<Order> orders = new DataServiceCollection<Order>(selectedOrders);        

        // Update Navigation
        orders[0].OrderDetails[0].Quantity=9999;

        dataServiceContext.SaveChanges();
    }

而且,我得到一个例外

"When writing a JSON response, a user model must be specified and the entity set and entity type must be passed to the ODataMessageWriter.CreateODataEntryWriter method or the ODataFeedAndEntrySerializationInfo must be set on the ODataEntry or ODataFeed that is being written."

我还通过以下方式从浏览器测试了相同的服务:>

http://localhost:6851/Orders(1)?$expand=OrderDetails

然后,服务返回

{ "@odata.context":"http://localhost:6851/$metadata#Orders/$entity","OrderId":1,"CustomerId":"KKKK9","OrderDetails":[
   {
      "OrderDetailId":1,"OrderId":1,"ProductId":1,"UnitPrice":10.00,"Quantity":1
   },
   {
      "OrderDetailId":2,"OrderId":1,"ProductId":2,"UnitPrice":20.00,"Quantity":2
   },
   {
      "OrderDetailId":6,"OrderId":1,"ProductId":3,"UnitPrice":30.00,"Quantity":33
   }
]}

Fiddler还将相同的json数据捕获到客户端程序,但是客户端模块不读取它并引发异常。

如果我删除“扩展”,它将正常工作。

我在做什么错?

我正在按以下方式测试OData .Net客户端:static void Main(string [] args){var dataServiceContext = new Container(new Uri(“ http://localhost.fiddler:6851 /”)); var ...

json client odata expand
1个回答
0
投票

我可以使用TripPin OData V4示例服务在.NET Core 3.1中重现该问题,如下所示:

© www.soinside.com 2019 - 2024. All rights reserved.