FirstOrDefaultAsync не возвращает обновленные данные - PullRequest
0 голосов
/ 06 ноября 2018

У меня в контроллере следующий код:

var getStatusLevel1 = await _repo.CheckStatus(lotId);
var status1 = getStatusLevel1.Status;
while (status1 == null) {
    // Level 2
    var getStatusLevel2 = await _repo.CheckStatus(lotId);
    var status2 = getStatusLevel1.Status;
    if(status2 != null) {
        status1 = status2;
    }
}

Когда я снова запрашиваю (уровень 2), он не дает обновленного результата. * Примечание: некоторые фоновые процессы изменяют данные .

См. CheckStatus () ниже:

    public async Task<ZRequestBn> CheckStatus(int lotId)
    {
        return await _context.ZRequestBn.FirstOrDefaultAsync( u => u.LotId == lotId);
    }

Каждый раз, когда я выполняю эту функцию, она возвращает старые данные.

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Вместо того, чтобы пытаться использовать метод CheckStatus, вы можете просто перезагрузить сущность, чтобы обновить данные.

await _context.Entry(ZRequestBn).ReloadAsync();

Или, если вам нужно разделить проблемы, вы можете использовать это и в своем методе CheckStatus. В любом случае вам нужно извлечь из базы данных новую сущность, а не ту, которая уже загружена в контексте.

Кроме того, вы можете создать новый контекст.

return await new MyContext().ZRequestBn.FirstOrDefaultAsync( u => u.LotId == lotId);
0 голосов
/ 06 ноября 2018

Возможно var status2 = getStatusLevel1.Status; неверно и должно быть var status2 = getStatusLevel2.Status;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...