这是我的基础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方法时,它会抛出一个异常,我指向帖子标题。我不知道如何解决这个问题。请注意,对于具有相同错误的不同主题的其他答案并未解决我的问题。
任何建议都会有所帮助。
答案 0 :(得分: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;
}
因为它已经附加了它会引发错误。