我有一种方法可以将用户的信息使用linq转换为sql类。该方法使用调用现有存储过程的linq语句执行三个查询。这里是我如何布置我的linq语句的一个例子。Linq to Sql TImeout问题
using (var db = new TestDataContext(connection)))
{
var user = db.proc_UserInfo(userId);
foreach (var x in user)
{
string FullName = x.FirstName + " " + x.LastName;
string Address = x.Addr1;
string City = x.City;
}
}
该方法通过一个web api控制器调用,该控制器从jquery ajax请求中触发。它工作正常,但是当我通过匆忙地改变完成用户的下拉列表来增加ajax请求的负载时,我注意到如果我可以做得足够快,看起来像去db的一批查询被取消并且调用被暂停几分钟,接下来的查询超时并返回空对象。有一点需要注意的是这些查询不会返回,而是返回几行数据。我仍然在试图弄清楚发生了什么事情并愿意接受建议。提前致谢。
proc_UserInfo手动执行它时需要多长时间运行?执行计划是什么样的?它可能只是返回几行,但你确定你没有废弃你的表来获得这些行吗? 还要考虑到每个Ajax请求可能会导致另一个工作线程在IIS中产生,并且您可能会窒息您的SQL客户端(假设它是sql server)连接池。 另外,你可以考虑通过在你的ajax请求之前禁用下拉列表来避开这个问题,并且不要在ajax完成之前重新启用它,以阻止人们对你进行操作:) – 2013-03-27 22:12:08
感谢自从我发布我一直在尝试再次打破它,没有骰子。它已经在不到一秒的时间内回复这些请求。我将禁用下拉菜单作为第二种预防措施,并尝试加载测试我的Web服务。谢谢斯蒂芬。 – vikingben 2013-03-27 23:26:12