在 c# 中使用 DbContext 删除对象时出错
本文关键字:删除 对象 出错 DbContext | 更新日期: 2023-09-27 18:33:10
>我有这个删除方法:
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);
}
}
当我单击该删除按钮时,出现此错误:
无法删除该对象,因为在 对象状态管理器。
或者有时会给我以下错误:
实体对象不能由多个实例引用 IEntityChangeTracker.
如何解决此问题并从上下文数据库集中删除对象?[谢谢]
好吧,您的第二个异常表明实体(或相关实体)附加到另一个上下文(也许您获得BankAcount
实体的上下文尚未释放,您应该检查一下)。
我不知道您如何获得实体,但要避免这些异常,您可以尝试以下方法:
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();