Linq到Sql超时问题

本文关键字:问题 超时 Sql Linq | 更新日期: 2023-09-27 18:06:03

我有一个使用linq to sql类提取用户信息的方法。该方法使用调用现有存储进程的linq语句执行三个查询。下面是我如何布置linq语句的一个例子。

            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请求,我注意到,如果我能做得足够快,似乎查询的批量数据库被取消,调用暂停了几分钟,下一个查询超时并返回空对象。需要注意的一点是,这些查询返回的不是数据,而是几行数据。我仍在努力弄清楚发生了什么,并愿意接受建议。提前感谢。

Linq到Sql超时问题

首先,我认为人们可能需要更多的信息。数据库类型我假设是SQL Server,但你还没有列出一个版本。在任何情况下,它可能是一些事情。记住AJAX调用是作为http请求/发布运行的,因此可能存在IIS超时或其他各种IIS限制。此外,您的呼叫是异步的等。Jquery有一些您可能想要验证的设置。表锁定也是SQL Server的一种可能。同时检查你的浏览器ram/w3wp使用情况,确保它没有耗尽资源。

首先,我建议运行SQL Profiler来验证发生了什么,然后检查这些查询的执行计划。如果有大量的数据,您可能需要一些索引