【发布时间】:2011-01-18 12:25:06
【问题描述】:
我有一个实体框架 v1 项目。我有两个实体(角色和权限),它们之间具有多对多的关系。我传入一个要保存的对象(通过 WCF 调用,我自己没有从上下文创建它),它在多对多关系中有新条目。
我使用“context.ApplyPropertyChanges”用新属性更新记录。我知道这不会更新关系。我尝试做一个 ChildCollection.Add(relatedObject);或 ChildCollection.Attach(relatedObject).
当我使用“添加”方法时,我收到以下错误:无法将对象添加到 ObjectStateManager,因为它已经有一个 EntityKey。使用 ObjectContext.Attach 附加具有现有键的对象。
当我使用“附加”方法时,我收到以下错误:无法将对象添加到 ObjectStateManager,因为它已经有一个 EntityKey。使用 ObjectContext.Attach 附加具有现有键的对象。
我感到非常沮丧,我想我可以听到实体框架在嘲笑我。
有谁知道我该如何解决这个问题?
MyRole x = context.Roles.FirstOrDefault(a => a.RoleId == this.RoleId);
context.ApplyPropertyChanges("Roles", this);
foreach (MyPermission p in this.Permissions)
{
x.Permissions.Add(p);
// ^ or v
x.Permissions.Attach(p);
}
context.SaveChanges();
谢谢。
【问题讨论】:
标签: entity-framework