在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();