在c#中删除具有DbContext的对象时出错?

在c#中删除具有DbContext的对象时出错?,c#,entity-framework,dbcontext,C#,Entity Framework,Dbcontext,我有这种删除方法: public void Delete(DBS.BankAccount entity) { try { if (_nahidContext.Entry(entity).State == System.Data.Entity.EntityState.Detached) { _nahidContext.BankAccounts.Attach(entity

我有这种删除方法:

     public void Delete(DBS.BankAccount entity)
    {
        try
        {
            if (_nahidContext.Entry(entity).State == System.Data.Entity.EntityState.Detached)
            {
                _nahidContext.BankAccounts.Attach(entity);
            }
            _nahidContext.Entry(entity).State = System.Data.Entity.EntityState.Deleted;
            //or
            //_nahidContext.BankAccounts.Remove(entity);
            _nahidContext.SaveChanges();
        }
        catch (Exception ex)
        {
            throw new ArgumentException(ex.Message);
        }
    }
单击该删除按钮时,出现以下错误:

无法删除该对象,因为在中找不到该对象 ObjectStateManager

或者有时给我以下错误:

实体对象不能由的多个实例引用 IEntityChangeTracker


如何修复此问题并从上下文数据库集中删除对象?[谢谢]

好吧,您的第二个异常提示实体(或相关实体)已附加到另一个上下文(可能是您获取
银行账户的上下文
实体尚未处理,您应该进行检查)

我不知道您是如何获取实体的,但为了避免这些异常,您可以尝试以下方法:

var entityToDelete=new BankAccount(){Id=entity.Id};//Create a new instance of BankAccount with only the Id
_nahidContext.BankAccounts.Attach(entityToDelete);
_nahidContext.BankAccounts.Remove(entityToDelete);
_nahidContext.SaveChanges();
或者只是:

var entityToDelete=new BankAccount(){Id=entity.Id};//Create a new instance of BankAccount with only the Id
_nahidContext.Entry(entityToDelete).State = System.Data.Entity.EntityState.Deleted;
_nahidContext.SaveChanges();