Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# FirstOrDefaultAsync不返回更新的数据_C#_Entity Framework - Fatal编程技术网

C# FirstOrDefaultAsync不返回更新的数据

C# FirstOrDefaultAsync不返回更新的数据,c#,entity-framework,C#,Entity Framework,我的控制器中有以下代码: 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;

我的控制器中有以下代码:

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()

公共异步任务检查状态(int-lotId)
{
返回wait_context.ZRequestBn.FirstOrDefaultAsync(u=>u.LotId==LotId);
}

每次执行此函数时,它都会返回旧数据。

可能
var status2=getStatusLevel1.Status错误,应为
var status2=getStatusLevel2.Status

可能
var status2=getStatusLevel1.Status错误,应为
var status2=getStatusLevel2.Status

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

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

或者,您可以实例化一个新上下文

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

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

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

或者,您可以实例化一个新上下文

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

当你们的代码将工作,我建议你们把它的标题是误导。在代码中的任何位置都看不到
FirstOrDefaultAsync
用法。对_上下文的引用是否始终使用上下文的同一实例?如果是这样,它可能返回已经从数据库加载的实体。您需要重新加载entity.await_context.Entry(ZRequestBn).ReloadAsync()中的;当你们的代码将工作,我建议你们把它的标题是误导。在代码中的任何位置都看不到
FirstOrDefaultAsync
用法。对_上下文的引用是否始终使用上下文的同一实例?如果是这样,它可能返回已经从数据库加载的实体。您需要重新加载entity.await_context.Entry(ZRequestBn).ReloadAsync()中的@TejashriPatange很高兴这有帮助。如果它解决了你的问题,请考虑接受这个答案。如果它解决了你的问题,请考虑接受这个答案。