使用带有通用存储库模式的 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;
}
}
从返回到我的存储库的 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;
}
当它遇到 Attach 和 EntityState.Modified 时,它会出现错误:
ObjectStateManager 中已存在具有相同键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。
我已经查看了堆栈和互联网上的许多建议,但没有提出任何解决它的方法。任何变通方法将不胜感激。
谢谢!