我有一種方法可以將用戶的信息使用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