对于以下代码,EF的预期行为是提交订单,并将orderItem
与orderID=100
一起提交,据我所知,字段orderID
的这种自动分配是已知的作为关系修复。因此,我们不必为要添加的orderID
提供orderItem
字段。
Entities ctx = new Entities();
Order order = new Order()
{
ID = 100,
name = "abc"
};
// ID field of OrderItem is auto-increment and the primary field
//OrderItem is a navigation property of Order through the orderID field
OrderItem orderItem = new OrderItem ()
{
name = "oi_abc"
};
order.OrderItems.Add(orderItem);
ctx.Orders.Add(order);
ctx.SaveChanges();
这段示例代码可以正常工作。但是问题是,我们项目中的类似代码无法正确修复关系。 (我知道最好提供完整的代码,但是由于代码和数据库的其他复杂性以及我们公司的政策,这是不可能的。)
我们的项目中的代码在提交期间仅将orderID
设置为0。
一些重要的事情要注意:
ctx.Orders.Add(order);
对象之后马上有order
行,那么它将按预期工作。在上述情况下,您对为什么会发生这种故障有任何猜测吗?