C# 实体框架:将子记录添加到现有父项

C# 实体框架:将子记录添加到现有父项,c#,entity-framework,C#,Entity Framework,我需要将子记录添加到和现有父记录 我调用以下方法 _handler.Update(custOrder); _handler.Save(); public TEntity Update(TEntity entity) { Entities.Attach(entity); DataContext.Entry(entity).State = EntityState.Modified; return entity

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

我调用以下方法

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


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

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

但是,当我执行此命令时,不会添加子项

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


请给出建议。

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

假设
OrderItem
类为您的子类:

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

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

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

您是否在同一上下文中执行您的
更新
保存
?是的,我使用保存功能保存多个交易,当我添加带有项目的新订单时,它工作正常这不是我的意思。您在
Update
方法中使用的
DataContext
是否与在其上运行
Save
的上下文相同?我不确定的是,如何指定父级未更改,但子级已添加,这是相同的context我可以使用这些方法(修改更新方法)执行此操作吗或者我需要介绍什么。我可以用一种通用的方式来处理任何类型的父子对象吗?你应该可以,但除非我知道你目前如何处理其他对象,否则我不知道如何帮助你。回答得很好!为什么有人投了反对票?它工作得很好。
 public TEntity Update(TEntity entity)
        {
            Entities.Add(entity);
            DataContext.Entry(entity).State = EntityState.Modified;
            return entity;
        }