FirstOrDefaultAsync不返回更新的数据

时间:2018-11-06 13:34:40

标签: c# entity-framework

我的控制器中包含以下代码:

scikit-learn

当我再次查询(第2级)时,它没有给出任何更新的结果。 *注意:某些后台进程正在更改数据

请参阅下面的checkStatus():

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 个答案:

答案 0 :(得分:2)

也许var status2 = getStatusLevel1.Status;是错误的,应该是var status2 = getStatusLevel2.Status;

答案 1 :(得分:0)

您可以重新加载实体以刷新数据,而不必尝试使用CheckStatus方法。

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

或者,如果您需要分离关注点,也可以在CheckStatus方法中使用它。无论哪种方式,您都需要从数据库中检索一个新的实体,而不是从上下文中已加载的实体。

或者,您可以实例化新的上下文。

return await new MyContext().ZRequestBn.FirstOrDefaultAsync( u => u.LotId == lotId);