首先,这是我的第一个问题,我是一个大三,所以请与我裸露,如果我说什么愚蠢的。
我在我的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"关键字-没有变化。
1条答案
按热度按时间wrrgggsh1#
您的问题 * 可能 * 是实体框架使用了延迟加载,也就是说,在您实际使用结果之前,它甚至没有开始获取数据。
这将强制EF执行查询。