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

问题描述 投票:0回答:2

我正在使用EF6,我试图删除这样的实体:

  public virtual void Delete(TEntity entity)
    {

        DbContext.Configuration.ValidateOnSaveEnabled = false;
        DbContext.ChangeTracker.DetectChanges();

        _dbSet.Remove(entity);
    }

但它给我这样的错误:

enter image description here

然后我使用了另一种方法:

    DbContext.ChangeTracker.DetectChanges();
        DbContext.Entry(entity).State = EntityState.Deleted;

现在错误是这样的:enter image description here

提前致谢。

c# wpf entity-framework datacontext dbset
2个回答
2
投票

您无法删除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()


1
投票

试试这个。

DbContext.Entry(entity).State = EntityState.Deleted;
DbContext.SaveChanges();
© www.soinside.com 2019 - 2024. All rights reserved.