0

我正在嘗試更新兩個表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

請回答

回答

0

的EF背景一無所知的對象,除非您將一個給定的對象上下文,或者,您最初從上下文中檢索對象。

而不是僅僅標誌着實體修改:

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

你需要調用Update(),其中,開始跟蹤實體&標記爲修改,所以,當你打電話SaveChanges(),變化會寫入DB:

_context.Update(result); 

PS。在這種情況下,我只能調用SaveChanges()一次,在您的方法結束時。

+0

根據您的建議,它只更新一個實體。相關實體沒有更新 –

+0

你的情境實體是什麼樣的?相關實體是否在'_mapper.Map (data);'call中被設置? – steamrolla

+0

這只是爲了將包含對象的對象映射到dbcontext屬性來更新數據庫表,但它只更新了情境表,並且我想更新情境類別表也 –