2013-02-27 104 views
1

我想在我的SQL Server 2008 R2上運行一個簡單的存儲過程。執行存儲過程時EntityFramework獲取超時

當我使用Studio Management運行該過程時,在使用EF運行時,我在不到一秒的時間內得到答案,2分鐘後(我將CommandTimeout設置爲2分鐘),我得到超時異常。

當我使用LINQ時,效果很好,但我更喜歡存儲過程。

任何人都知道可能是什麼問題?

+0

請顯示調用sproc的代碼。 – 2013-02-27 13:49:47

+0

這個作品: allCountries = db.AllEvents.Where(x => x.cID == 6046).Select(x => x.CountryID).ToList(); THES DOESNT: allCountries = db.GetLocationsBySport(6046).Select(x => x.Value).ToList(); 當我直接在數據庫上運行它時,它非常完美! – 2013-02-27 13:51:28

+0

如下所示,第二個查詢是否實際到達數據庫?你確定沒有拋出異常? – 2013-02-27 14:02:12

回答

0

這聽起來很奇怪,特別是因爲EF根據您的Linq語句進行了非常優化的查詢,所以嘗試使用SQL分析器查看發送到數據庫的命令。

0

通常情況下,當您使用Compact以外的SQL Server版本時,您需要在Entity Framework的連接字符串中使用MultipleActiveResultSets = True。這可能是你的問題。另外,正如其他人所建議的那樣,您是否檢查過SQL Profiler以查看要發送到數據庫的代碼?