OData V4 客户端传递父项和子项作为参数
本文关键字:参数 V4 客户端 OData | 更新日期: 2023-09-27 18:36:14
我有一个用于"订单"的OData V4控制器,在订单控制器中,我添加了一个名为"SaveWithChild"的方法,它是一个HttpPost,参数类型为ODataActionParameters。
在 WebApiConfig 中,我在"Orders"实体上为"SaveWithChild"添加了一个 ActionConfiguration,参数类型为"Order"。
的子属性,OrderLine有一个名为"UpdateUser"的属性。
如下所示:
class Order
{
public string UpdateUser { get; set; }
public OrderLine OrderLine { get; set; }
}
class OrderLine
{
public string UpdateUser { get; set; }
}
现在在客户端,我希望能够通过调用控制器上的"SaveWithChild"方法来更新父"订单"和子"订单行"的"UpdateUser"字段。
var context = new Container("URI");
var order = (from o in context.Orders.Expand("OrderLine") where o.ID = 1 select o).FirstOrDefault();
order.UpdateUser = "test";
order.OrderLine.UpdateUser = "test";
context.Orders.SaveWithChild(order);
当我运行Fiddler时,我可以看到"OrderLine"对象没有与JSON http帖子中的Order对象一起传递。
我可以将对象序列化为字符串,将其作为字符串传递给控制器,然后在控件内反序列化它。
这确实有效,但我希望有更好的方法。
你可以做这样的事情: DataServiceCollection coll = new DataServiceCollection(context.People.Expand("照片")。Where(p => p.UserName == "russellwhyte")); 上校。第一()。Photo.Name = "测试"; 上校。第一()。姓氏 ="测试";
上下文。保存更改();如果这不能解决您的问题,请告诉我。