实体框架:将子记录添加到现有父级

时间:2014-12-19 18:23:56

标签: c# entity-framework

我需要将子记录添加到现有父级。

我称之为以下方法

_handler.Update(custOrder);
_handler.Save();


public TEntity Update(TEntity entity)
        {
            Entities.Attach(entity);
            DataContext.Entry(entity).State = EntityState.Modified;
            return entity;
        }

  public void Save() {
            try
            {
                base.SaveChanges();
            }
            catch (Exception e) { }
        }

custOrder包含父(已经存在)和需要添加的新子记录。例如。添加现有订单的订单商品。

然而,当我执行此操作时,孩子不会被添加。

我不确定如何指定父级未更改但添加了子级

请建议。

2 个答案:

答案 0 :(得分:3)

我终于得到了答案,有点微妙的不得不承认,需要添加父实体而不是附加,然后将状态设置为修改。

 public TEntity Update(TEntity entity)
        {
            Entities.Add(entity);
            DataContext.Entry(entity).State = EntityState.Modified;
            return entity;
        }

答案 1 :(得分:2)

你需要告诉EF孩子本身实际上已被添加。当EntityState设置为Modified时,不会从父级假设需要添加某些内容。您需要将新的子记录添加到上下文中,然后运行保存。

假设OrderItem班为您的孩子:

dbContext.OrderItems.Add(myNewOrderItem);
dbContext.SaveChanges();