0

这是我的基Repository类:

public class RepositoryBase<TEntity> : IRepository<TEntity> where TEntity : EntityBase
{
    protected RepositoryBase(DbContext dbContext)
    {
        DbContext = dbContext;
        DbContext.Configuration.LazyLoadingEnabled = false;
        Entities = DbContext.Set<TEntity>();
    }
    public IDbSet<TEntity> Entities { get; set; }    
    ...
    ...
    ...

    public TEntity DeleteOne(TEntity entity)
    {
        DbContext.Entry(entity).State = EntityState.Deleted;
        Entities.Remove(entity);
        DbContext.SaveChanges();
        return entity;
    }
}

当我想调用 delete 方法时,它会引发我在帖子标题中指向的异常。我不知道我该如何解决这个问题。请注意,具有相同错误的不同主题的其他答案并没有解决我的问题。

任何建议都会有所帮助。

4

1 回答 1

0

删除行:

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

这是试图附加实体的第二个副本。这是一个快捷方式:

DbContext.Attach(entity);
DbContext.Remove(entity);

所以你的代码真的是:

public TEntity DeleteOne(TEntity entity)
{
    DbContext.Attach(entity);
    DbContext.Remove(entity);
    Entities.Remove(entity);
    DbContext.SaveChanges();
    return entity;
}

并且由于它已经附加它会引发错误。

于 2013-01-16T16:59:37.407 回答