我有一个非常简单的LINQ查询,我调用一个视图来获取一个对象,基本上它看起来像这样:
context.view.FirstOrDefault(p => p.id == key)
Key和id是字符串,我认为这不太理想。但是,当我对我的本地数据库运行它时,它工作正常。
但是,当我部署我的应用程序时,我收到消息:
[Win32Exception (0x80004005): The wait operation timed out]
[SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to
completion of the operation or the server is not responding.]
等
针对视图的其他查询可以快速按预期工作。他们返回列表而不是单个对象,我不确定这是否会产生影响。
由于环境的配置方式,我无法从我的开发环境连接到托管数据库,所以我的故障排除选项有限。我已经仔细检查过本地和托管环境中的视图是否相同。
当我在SSMS中针对托管数据库运行查询时,它会在一秒钟内执行。
我不确定在故障排除方面有什么好的后续步骤,并希望得到任何建议。
我正在使用Entity Framework 6,数据库优先。
答案 0 :(得分:1)
这些是戴安娜和威廉的伟大建议。不幸的是,我没有权限在托管数据库中查看查询计划。
在简化托管数据库上的视图返回的结果之后,我确定查询作为问题根源的视图实际上是缓慢的。虽然查询本身很简单,但视图非常复杂。我要看看我是否可以获得数据库的必要权限来制作索引视图。