【发布时间】:2016-02-16 16:58:21
【问题描述】:
IQueryable<MailHeader> mailHeader =
_ctx.MailHeaders.Where(w => (w.ToReceipientID.Contains(curUser)
|| w.CCReceipientID.Contains(curUser)
|| w.BCCReceipientID.Contains(curUser))
&& w.UnRead == true && w.IsDraft == false
&& w.IsInbox == true
&& (w.IsApproved == true || w.IsApproved == null));
int unReadMails = mailHeader.Count();
大家好。首次登录时遇到此问题。
在执行上述 C# 控制器代码行时,我遇到了超时表达式。在查看了以前的建议后,我尝试使查询 IQueryable 并执行,但在执行计数语句时仍然看到超时错误。谁能帮忙找出原因?
【问题讨论】:
-
可能你可以尝试增加DataContext中的超时时间。我假设 _ctx 是你的 DataContext。
-
您是否尝试过查看正在生成的 SQL 并针对您的 SQL 服务器运行它以查看查询本身是否有问题?可能是您需要向表中添加一些索引。
-
MailHeaders 数据库表中有多少条记录?而且,那是一张普通的桌子,还是一个视图,还是别的什么?这将有助于确定超时是否真的超时,或者可能是其他原因(例如死锁或数据库视图分页问题等)。
-
@RyanTernier 该查询在 SQL Server 中运行良好,几乎不需要一秒钟就可以给我结果。
-
@MattJordan 这是一张普通的桌子。 Mailheader 有大约 300 行。
标签: c# linq sql-server-ce