EntityFramework更新模型

时间:2016-03-03 12:18:56

标签: c# entity-framework

我正在尝试更新数据库中的对象,但我不断收到以下错误:

  

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.Repository 1.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

0 个答案:

没有答案