postgresql C# -实体框架查询在不应返回NullExpression时返回NullExpression

zxlwwiss  于 2023-03-08  发布在  PostgreSQL
关注(0)|答案(1)|浏览(124)

首先,这是我的第一个问题,我是一个大三,所以请与我裸露,如果我说什么愚蠢的。
我在我的C#代码中遇到了一个奇怪的问题,其行为如下:
我在foreach语句中有一个简单的数据库查询,它返回NullExpression,尽管总是有一些东西要返回(这里我必须请您相信我)。
奇怪的是,如果我在查询行添加一个断点,然后一步一步地执行,查询会返回值,就像正常运行时,查询没有足够的时间从数据库返回值(即使使用'await'关键字)。
查询:

var optModelProperty = await _modelProperty.GetWhere(x =>
                                        x.Name == property.Parent && x.OptModelId == id &&
                                        x.ElementId == modelElement.Id).FirstOrDefaultAsync();
parentId = optModelProperty.Id;
    • 工作:**在查询行添加断点-如果逐步执行这两行,查询工作正常(不再有NullException)
    • 没有成功:**我尝试添加线程。在查询和下一行之间休眠长达1000毫秒-仍然是nullException。我尝试重新生成和清理解决方案-没有结果。我清除了Nuget缓存-同上。我重新启动了Docker-没有变化。我重新启动了Visual Studio-没有变化。我尝试删除"await"和"Async"关键字-没有变化。
wrrgggsh

wrrgggsh1#

您的问题 * 可能 * 是实体框架使用了延迟加载,也就是说,在您实际使用结果之前,它甚至没有开始获取数据。

var optModelProperty = await _modelProperty.GetWhere(x =>
           x.Name == property.Parent && x.OptModelId == id &&                                        
           x.ElementId == modelElement.Id).FirstOrDefaultAsync().ToList();

这将强制EF执行查询。

相关问题