[英]Unable to delete using dbSet - Entity Framework
I am using EF6 and I am trying to delete an entity like this: 我正在使用EF6,并且尝试删除这样的实体:
public virtual void Delete(TEntity entity)
{
DbContext.Configuration.ValidateOnSaveEnabled = false;
DbContext.ChangeTracker.DetectChanges();
_dbSet.Remove(entity);
}
But it's giving me error like this: 但这给了我这样的错误:
Then I used another method like this: 然后我使用了另一种这样的方法:
DbContext.ChangeTracker.DetectChanges();
DbContext.Entry(entity).State = EntityState.Deleted;
and now the error is something like: 现在错误是这样的:
Thanks in advance. 提前致谢。
You can't remove the entity which doesn't exist in ObjectStateManager
. 您无法删除ObjectStateManager
中不存在的实体。 Try to attach it before trying to remove; 尝试将其连接后再尝试将其卸下;
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);
}
Also, I don't know how are you fetching the entity instance but don't use .AsNoTracking()
if you will modify or remove them. 另外,我不知道您如何获取实体实例,但是如果要修改或删除它们,请不要使用.AsNoTracking()
。
Try this. 尝试这个。
DbContext.Entry(entity).State = EntityState.Deleted;
DbContext.SaveChanges();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.