public TEntity SelectById(T id)
{
TEntity entity = _dbContext.Set<TEntity>().Find(id);
return entity;
}
public void DeleteById(T id)
{
TEntity entity = new TEntity() { Id = id };
_dbContext.Entry<TEntity>(entity).State = EntityState.Deleted;
_dbContext.SaveChanges();
}
QuartzOption quartzOption = _quartzOptionRepository.SelectById(id);
_quartzOptionRepository.DeleteById(id);
await _schedulerFactory.TriggerAction(quartzOption, JobAction.删除);
为啥我的数据不会被删掉也没报错,但是我把根据id查询那个代码注释掉就可以删除了
我的猜测,SelectById 会造成 EF 对应 id 的实体进行跟踪
QuartzOption quartzOption = _quartzOptionRepository.SelectById(id);
你再添加一个同样 id 的实体,EF 会忽略这个实体,所以这个实体状态的改变也会被忽略
TEntity entity = new TEntity() { Id = id };
_dbContext.Entry<TEntity>(entity).State = EntityState.Deleted;
我也认为是的,我用AsNoTracking时就可以删除了