J'essaie de mettre à jour deux tables Situation
et SituationCategory
, mais elles ne sont pas mises à jour comme indiqué dans le code et l'image ci-dessous.
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();
}
Dans cette capture d'écran, j'ai mis en évidence les données qui devraient être mises à jour:
Répondre s'il vous plaît
Un contexte EF ne connaît rien des objets sauf si vous associez un objet donné à un contexte ou si vous avez initialement extrait un objet d'un contexte.
Au lieu de simplement marquer l'entité comme modifiée:
_context.Entry(result).State = EntityState.Modified;
Vous devez appeler Update()
, qui commence à suivre l'entité et la marque comme modifiée. Ainsi, lorsque vous appelez SaveChanges()
, les modifications seront écrites dans la base de données:
_context.Update(result);
PS J'appellerais seulement SaveChanges()
une fois, dans ce cas, à la fin de votre méthode.