我有一个用于“订单”的OData V4控制器,在订单控制器中我添加了一个名为“SaveWithChild”的方法,它是一个参数类型为ODataActionParameters的HttpPost。
在WebApiConfig中,我在“Orders”实体上为“SaveWithChild”添加了一个ActionConfiguration,其参数类型为“Order”。
现在让我们假设“Order”模型有一个名为“UpdateUser”的属性,并且还有一个名为“OrderLine”的子属性,OrderLine有一个名为“UpdateUser”的属性。
如下所示:
class Order
{
public string UpdateUser { get; set; }
public OrderLine OrderLine { get; set; }
}
class OrderLine
{
public string UpdateUser { get; set; }
}
现在在客户端,我希望能够通过在控制器上调用“SaveWithChild”方法来更新父“Order”和子“OrderLine”的“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对象一起传递。
我可以将对象序列化为字符串,将其作为字符串传递给控制器,然后在控件内反序列化。
这确实有效,但我希望有更好的方法。
答案 0 :(得分:0)
您可以这样做:
DataServiceCollection coll = new DataServiceCollection(context.People.Expand(" Photo")。其中(p => p.UserName ==" russellwhyte"));
coll.First()。Photo.Name =" test&#34 ;;
coll.First()。LastName =" test&#34 ;;
context.SaveChanges();
如果这不能解决您的问题,请与我们联系。