首页 新闻 赞助 找找看

EF先查询在删除有问题

0
[待解决问题]

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查询那个代码注释掉就可以删除了

EF
灬丶的主页 灬丶 | 初学一级 | 园豆:6
提问于:2021-03-03 14:36
< >
分享
所有回答(1)
0

我的猜测,SelectById 会造成 EF 对应 id 的实体进行跟踪

QuartzOption quartzOption = _quartzOptionRepository.SelectById(id);

你再添加一个同样 id 的实体,EF 会忽略这个实体,所以这个实体状态的改变也会被忽略

TEntity entity = new TEntity() { Id = id };
_dbContext.Entry<TEntity>(entity).State = EntityState.Deleted;
dudu | 园豆:31075 (高人七级) | 2021-03-03 21:00

我也认为是的,我用AsNoTracking时就可以删除了

支持(0) 反对(0) 灬丶 | 园豆:6 (初学一级) | 2021-03-04 09:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册