小编Jua*_*uan的帖子

ObjectStateManager中已存在具有相同键的对象.ObjectStateManager无法使用相同的键跟踪多个对象

使用带有通用存储库模式的EF5和ninject用于依赖性损害并在尝试使用存储过程与我的edmx将实体更新到数据库时遇到问题.

我在DbContextRepository.cs中的更新是:

public override void Update(T entity)
{
    if (entity == null)
        throw new ArgumentException("Cannot add a null entity.");

    var entry = _context.Entry<T>(entity);

    if (entry.State == EntityState.Detached)
    {
        _context.Set<T>().Attach(entity);
        entry.State = EntityState.Modified;
    }
}
Run Code Online (Sandbox Code Playgroud)

从我的AddressService.cs回到我的存储库我有:

 public int Save(vw_address address)
{
    if (address.address_pk == 0)
    {
        _repo.Insert(address);
    }
    else
    {
        _repo.Update(address);
    }

    _repo.SaveChanges();

    return address.address_pk;
}
Run Code Online (Sandbox Code Playgroud)

当它命中Attach和EntityState.Modified时,它会发出错误:

ObjectStateManager中已存在具有相同键的对象.ObjectStateManager无法使用相同的键跟踪多个对象.

我已经查看了堆栈和互联网上的许多建议,但没有提出解决它的任何建议.任何工作都将受到赞赏.

谢谢!

c# entity-framework ninject repository-pattern entity-framework-5

71
推荐指数
3
解决办法
7万
查看次数