Entity framework EF 4.3 CF在保存更改时不更新关系

Entity framework EF 4.3 CF在保存更改时不更新关系,entity-framework,entity-relationship,Entity Framework,Entity Relationship,我有一个ClubItem对象,它具有关系集合ICollection ClubUsers。我从上下文中加载了一个ClubItem,并向ClubItem添加了几个新用户。在断开连接状态下保存ClubItem时,上下文不会将新clubuser视为新实体。如何告诉上下文发生了变化?我已准备好使用此选项更改ClubiItem的entitystate: public virtual void Update(IEntity entityToUpdate) { DbSet.Att

我有一个ClubItem对象,它具有关系集合ICollection ClubUsers。我从上下文中加载了一个ClubItem,并向ClubItem添加了几个新用户。在断开连接状态下保存ClubItem时,上下文不会将新clubuser视为新实体。如何告诉上下文发生了变化?我已准备好使用此选项更改ClubiItem的entitystate:

    public virtual void Update(IEntity entityToUpdate)
    {
        DbSet.Attach(entityToUpdate);
        Context.Entry(entityToUpdate).State = EntityState.Modified;

        SaveChanges();
    } 

在您的特定情况下,您可能只需删除
Attach
行即可<代码>附加将分离的实体(包括对象图中的其他分离实体)置于状态
未更改
。当您将状态更改为
Modified
时,它仅影响父实体,子实体仍处于状态
Unchanged
。如果调用
SaveChanges
,则不会保存子项,因为它们的状态为
未更改

如果不调用
Attach
,则子项将保持分离状态,直到调用
SaveChanges
,此时EF将假定它们是新实体(因为它们未附加到上下文),并将其状态设置为
Added
。然后将它们插入到数据库中

但是,如果删除
Attach
行,则无法再使用该方法更新现有父级和现有子级之间的关系

通常,当分离的实体包含已更改的实体的子集合时,通常需要从数据库重新加载原始对象图并将更改合并到其中。这种复杂分离对象图的更新不能以通用方式工作,需要特定于实体类型的代码。例如: