无法使用 dbSet 删除 - Entity Framework
Unable to delete using dbSet - Entity Framework
我正在使用 EF6,我正在尝试删除这样的实体:
public virtual void Delete(TEntity entity)
{
DbContext.Configuration.ValidateOnSaveEnabled = false;
DbContext.ChangeTracker.DetectChanges();
_dbSet.Remove(entity);
}
但它给我这样的错误:
然后我又用了这样的方法:
DbContext.ChangeTracker.DetectChanges();
DbContext.Entry(entity).State = EntityState.Deleted;
现在错误是这样的:
提前致谢。
试试这个。
DbContext.Entry(entity).State = EntityState.Deleted;
DbContext.SaveChanges();
您无法删除 ObjectStateManager
中不存在的实体。在尝试删除之前尝试附加它;
public virtual void Delete(TEntity entity)
{
DbContext.Configuration.ValidateOnSaveEnabled = false;
DbContext.ChangeTracker.DetectChanges();
var entry = DbContext.Entry(entity);
if (entry.State == EntityState.Detached)
_dbSet.Attach(entity);
_dbSet.Remove(entity);
}
另外,我不知道你是如何获取实体实例的,但如果你要修改或删除它们,请不要使用 .AsNoTracking()
。
我正在使用 EF6,我正在尝试删除这样的实体:
public virtual void Delete(TEntity entity)
{
DbContext.Configuration.ValidateOnSaveEnabled = false;
DbContext.ChangeTracker.DetectChanges();
_dbSet.Remove(entity);
}
但它给我这样的错误:
然后我又用了这样的方法:
DbContext.ChangeTracker.DetectChanges();
DbContext.Entry(entity).State = EntityState.Deleted;
现在错误是这样的:
提前致谢。
试试这个。
DbContext.Entry(entity).State = EntityState.Deleted;
DbContext.SaveChanges();
您无法删除 ObjectStateManager
中不存在的实体。在尝试删除之前尝试附加它;
public virtual void Delete(TEntity entity)
{
DbContext.Configuration.ValidateOnSaveEnabled = false;
DbContext.ChangeTracker.DetectChanges();
var entry = DbContext.Entry(entity);
if (entry.State == EntityState.Detached)
_dbSet.Attach(entity);
_dbSet.Remove(entity);
}
另外,我不知道你是如何获取实体实例的,但如果你要修改或删除它们,请不要使用 .AsNoTracking()
。