1

我有一种使用 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;                        
                }
            }

这个方法是通过一个从 jquery ajax 请求触发的 web api 控制器调用的。它工作得很好,但是当我通过匆忙更改下拉列表中的用户进行 ajax 请求时,我注意到如果我能足够快地做到这一点,似乎去数据库的一批查询被取消并且调用暂停几分钟,下一个查询超时并返回空对象。需要注意的一点是,这些查询并没有返回几行数据。我仍在试图弄清楚发生了什么,并对建议持开放态度。提前致谢。

4

1 回答 1

1

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

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

于 2013-03-27T21:45:32.340 回答