Situation
とSituationCategory
2つのテーブルを更新しようとしていますが、下記のコードと画像で述べたように更新されていません。
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();
}
このスクリーンショットでは、私は更新すべきデータを強調表示しました:
お答えください
EFコンテキストは、特定のオブジェクトをコンテキストにアタッチしたり、最初にコンテキストからオブジェクトを取得したりしない限り、オブジェクトについては何も知らない。
エンティティを変更済みとしてマークするのではなく、
_context.Entry(result).State = EntityState.Modified;
Update()
を呼び出す必要があります。エンティティのトラッキングを開始し、変更されたとマークします。そのため、 SaveChanges()
を呼び出すと、変更がDBに書き込まれます。
_context.Update(result);
PS。この場合、メソッドの最後にSaveChanges()
一度呼び出すだけです。