实体框架在父级之前保存子级

本文关键字:保存 实体 框架 | 更新日期: 2023-09-27 18:24:14

实体框架是否支持通过下面的导航属性从下往上保存?我在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; }
}

实体框架在父级之前保存子级

如果表之间有FK约束,则父OrderEntity必须已经存在于数据库中,才能以您现在的方式添加子项。

如果您试图同时创建订单和项,那么我认为您需要将子项添加到父OrderEntity上的OrderItemEntities集合中。在调用SaveChanges时,还要确保两者都在同一上下文中。