实体框架在父母之前保存孩子

时间:2013-07-22 22:14:45

标签: c# entity-framework entity-framework-5

Entity Framework是否支持自下而上的导航属性,如下所示?我在ORDERID上得到一个FK约束错误,表明没有。 ORDERID是一个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; }
}

1 个答案:

答案 0 :(得分:2)

如果表之间有FK约束,那么数据库中必须已存在父OrderEntity,以便按照您的方式添加子项。

如果您尝试同时创建订单和商品,那么我认为您需要将子项添加到父OrderItemEntities上的OrderEntity集合中。当您致电SaveChanges时,请确保两者都处于相同的上下文中。