我正在使用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方法,但是没有保存在数据库中。
问题:
DataServiceCollection<Order>
来跟踪订单
集合?其他信息:
我在WPF中创建了一个主详细信息窗口,并将订单集合绑定到Datagdid
。