我正在尝试更新数据库中的对象,但我不断收到以下错误:
System.InvalidOperationException:附加类型为“Api.Models.Value”的实体失败,因为同一类型的另一个实体已具有相同的主键值。如果图中的任何实体具有冲突的键值,则在使用“附加”方法或将实体的状态设置为“未更改”或“已修改”时,可能会发生这种情况。这可能是因为某些实体是新的并且尚未收到数据库生成的键值。在这种情况下,使用“添加”方法或“已添加”实体状态来跟踪图形,然后根据需要将非新实体的状态设置为“未更改”或“已修改”。 at System.Data.Entity.Core.Objects.ObjectContext.VerifyRootForAdd(Boolean doAttach,String entitySetName,IEntityWrapper wrappedEntity,EntityEntry existingEntry,EntitySet& entitySet,Boolean& isNoOperation) at System.Data.Entity.Core.Objects.ObjectContext.AttachTo(String entitySetName,Object entity) 在System.Data.Entity.Internal.Linq.InternalSet
1.ActOnSet(Action action, EntityState newState, Object entity, String methodName) at System.Data.Entity.Internal.Linq.InternalSet
1.Attach(对象实体) 在System.Data.Entity.Internal.InternalEntityEntry.set_State(EntityState value) 在Api.Repositories.Repository1.Update(TObject TObject) in C:\__PS\AWF Library\Content Templates\Development\Code\Client\Template\Web+Api\Api\Repositories\Repository.cs:line 105 at Api.Services.Service
1.更新(Int32 id,TObject obj)在C:__ PS \ AWF Library \ Content Templates \ Development \ Code \ Client \ Template \ Web + Api \ Api \ Services \ Service。 cs:第60行
这是更新代码:
public virtual int Update(TObject TObject) {
var entry = Context.Entry(TObject);
DbSet.Attach(TObject);
entry.State = EntityState.Modified;
if (!shareContext) {
var result = Context.SaveChanges();
return result;
}
return 0;
}
任何线索为何会发生这种情况?以及如何解决它?
有关我的代码结构的更多信息,请访问:Entity Framework load relation