更新Entity Framework中的多个实体

时间:2017-08-18 18:07:15

标签: entity-framework linq entity-framework-core multiple-tables

我正在尝试更新两个表SituationSituationCategory,但它没有像下面的代码和图片中提到的那样进行更新。

public async Task<bool> UpdateSituation(int id, SituationsDto data)
{
    Situations result = _mapper.Map<SituationsDto, Situations>(data);
    result.Deleted = true;

    _context.Entry(result).State = EntityState.Modified;
    await _context.SaveChangesAsync();

    SituationCategories situationCategory = new SituationCategories();

    if (result.SituationCategory != null)
    {
        if (situationCategory != null)
        {
            situationCategory.Description = result.SituationCategory.Description;
        }
    }

    await _context.SaveChangesAsync();
}

在此屏幕截图中,我突出显示了应更新的数据:

enter image description here

请回答

1 个答案:

答案 0 :(得分:0)

除非您将给定对象附加到上下文,否则EF上下文对对象一无所知,或者您最初从上下文中检索了一个对象。

而不是仅仅将实体标记为已修改:

_context.Entry(result).State = EntityState.Modified;

您需要致电Update(),然后开始跟踪实体&amp;将其标记为已修改,因此,当您调用SaveChanges()时,更改将写入DB:

_context.Update(result);

PS。在这种情况下,我只会在您的方法结束时拨打SaveChanges()一次。