简体   繁体   English

无法使用dbSet删除-实体框架

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM