如何使用OData v4更新Web API 2中的导航属性集合?

时间:2015-07-21 10:29:59

标签: c# asp.net-web-api odata navigation-properties

我正在使用Asp.Net WebApi 2.2,Odata V4开发客户端服务器应用程序。 我已经生成了一个Odata v4代理类,用于在WPF应用程序中使用WebApi Odata服务。

我的解决方案中有以下模型:

public class Customer
{
    public Customer
    {
        Orders = new List<Order>();
    }
    public int Id{get; set;}
    public string CustomerName{get; set;}
    public virtual List<Order> Orders{get; set;}
}

public class Order
{
    public int Id{get; set;}
    public string Part{get; set;}
    public virtual Customer Customer{get; set;}
}

客户和订单之间存在一对多的关系。 订单被定义为Customer实体中的导航属性;

在Odata客户端,我有以下代码来获取客户记录。

Customer customer = context.Customers.ByKey(1).Expand("Orders").GetValue();

可以获取,模糊化并保存客户实体属性的变化。

context.UpdateObject(Customer);
context.SaveChanges();

但是导航属性( Orders )中的更改在保存时丢失了。 我已经调试了服务器代码( Controller ),我可以看到更改后的值(Order集合中的)被发送到服务器中的Patch方法,但是没有保存在数据库中。

问题:

  1. 如何向Orders集合中添加新项目?
  2. 如何修改Orders集合中的属性?
  3. 我应该使用DataServiceCollection<Order>来跟踪订单 集合?
  4. 其他信息: 我在WPF中创建了一个主详细信息窗口,并将订单集合绑定到Datagdid

0 个答案:

没有答案