我有一個頁面將來自兩個不同表格的聚集數據組合在一起。我希望並行執行這些查詢,以減少延遲,而不必引入可執行這兩個操作的存儲過程。在沒有存儲過程的情況下在EF4中執行同時無關的查詢?
例如,我現在有這樣的:
ViewBag.TotalUsers = DB.Users.Count();
ViewBag.TotalPosts = DB.Posts.Count();
// Page displays both values but has two trips to the DB server
我想一個類似於:
var info = DB.Select(db => new {
TotalUsers = db.Users.Count(),
TotalPosts = db.Posts.Count());
// Page displays both values using one trip to DB server.
會產生這樣的
SELECT (SELECT COUNT(*) FROM Users) AS TotalUsers,
(SELECT COUNT(*) FROM Posts) AS TotalPosts
因此查詢,我正在尋找一個查詢來擊中數據庫服務器。我不問如何使用並行任務或線程
很顯然,我可以創建行程單回來的兩個值的存儲過程兩個單獨的查詢,但我想避免,如果可能的,因爲它更容易純粹在代碼中添加額外的統計信息,而不是不斷刷新數據庫導入。
我錯過了什麼嗎? EF中有一個很好的模式可以說你想要幾個不同的值可以並行取出嗎?
我猜測帖子與用戶無關? –
對。我只是編制了這兩個表名。我的實際是其他東西是不相關的 –
我意識到這並沒有真正幫助你,但我認爲值得注意的是,NHibernate有一個名爲'期貨'的概念,它有相同的事情(即多個查詢在一個請求中)。 – StanK