2013-07-22 46 views
1

實體框架是否支持通過下面的導航屬性自下而上保存?我在ORDERID上得到FK約束錯誤,表明不是。將訂單是一個FK到ORDERID(但這不是一個PK)實體框架在父母之前保存孩子

someOrderItemEntity.OrderEntity = someOrderEntity; 
someOrderItemEntity.ORDERID = someOrderEntity.ORDERID; 
context.OrderItems.Add(someOrderItemEntity); 
context.SaveChanges(); 

public partial class OrderEntity 
{ 
    public int ID { get; set; } 
    public int ORDERID { get; set; } 
    public virtual ICollection<OrderItemEntity> OrderItemEntities{ get; set; } 
} 

public partial class OrderItemEntity 
{ 
    public int ID { get; set; } 
    public int ORDERID { get; set; } 

    public virtual OrderEntity OrderEntity{ get; set; } 
} 
+0

您試圖添加項目的父'OrderEntity'是否已經存在,或者您是否試圖同時創建它? –

+0

@BrianRogers - 試圖在同一時間創建它。 –

回答

2

如果你有表之間的FK約束,則父OrderEntity必須在數據庫中已存在添加子項中的方法你在做。

如果您嘗試同時創建訂單和項目,那麼我認爲您需要將子項添加到父項OrderEntityOrderItemEntities集合中。當您致電SaveChanges時,請確保兩者都處於相同的環境中。