我使用Odata v4 WebApi 2.2,Entity Framework 6和Odata v4代理客户端(WPF) 在一个项目中。
请考虑以下代码:
//Model Class
public class Order
{
public int OrderId {get;set;} //Auto Generated Id
public string OrderDescription {get;set;}
Public virtual IEnumerable<OrderLine> OrderLines;
}
//Model Class
public class OrderLine
{
public int OrderId {get;set;} //Auto Generated Id
public int OrderLineId {get;set;} //Key of the parent entity
public string PartDescription {get;set;}
Public virtual Order Order;
}
//Odata Proxy Client Code
public void insert()
{
Order order new Order;
order.OrderDescription = "Test Desc";
order.Add( new OrderLine{PartDescription = P100}) //OrderId & OrderLineId is null
order.Add( new OrderLine{PartDescription = P101})//OrderId & OrderLineId is null
order.Add( new OrderLine{PartDescription = P101})//OrderId & OrderLineId is null
//When save changes is called OrderId needs to be set to order lines
Context.SaveChanges();
}
我需要从客户端创建Order with Order行,然后发送回数据库进行保存。问题是密钥是在数据库中为类Order
&amp;而自动生成的。 OrderLine
。
我需要执行深度插入,操作需要按以下顺序进行。
OrderId
。EF或Odata V4是否支持深度插入? 我怎样才能做到这一点?
答案 0 :(得分:1)
现在不支持深度插入,但是您可能有一个解决方法,使用$ ref,
WebAPI方面有一个例子: