場景:我一直在和一個第三方公司一起主持WCF數據服務3.0,我們只有API訪問他們的web服務,不,我不能使用存儲過程加快速度,因爲我不知道沒有SQL直接訪問權限。如何在WCF數據服務中使用多線程/ pfx來加快速度?
我已經玩PFX了一點,我可能是錯誤的嘗試沿着WCF數據服務使用它。例如
public List<EntityA> GetAEntitiesBy(int customerID) {
var result = new List<EntityA>();
int lastResultCount = 50;
int callsMade = 0;
while (lastResultCount == 50)
{
var results = MyApiWrapper.CreateODataContext().EntityA.Expand("Customer").Expand("EntityB").AsParallel()
.Where(c => c.EntityA.CustomerID == customerID)
.Where(c => c.EntityB.IsProperty1True && c.EntityB.Property2TypeID == 1)
.Select(c => c)
.Skip(callsMade * 50)
.Take(50));
results.ForAll(c => nodes.Add(c));
callsMade++;
lastResultCount = results.Count;
}
return nodes;
}
我明白,我只能每次我化DataServiceQuery時候拉50行最大,我的瓶頸在創建後此功能結果回到我的網頁表單,因爲後來我做了.ForEach
和每個排我得到我需要運行其他服務(WCF)
如何加快此操作的任何建議嗎?
另一方面,當我調試此方法時,在並行查詢執行期間調用GetEnumerator時發現錯誤消息「Children could not Be evaluated」。
感謝
Hi @Eric,謝謝你的回覆。我正在使用ObjectCache作爲輸出結果,這個數據顯示在一個Custom jQGrid中(分頁允許10,20,50和他們想要的任何數字,這可能是問題,但是是用戶想要的) – 2013-02-14 17:28:51
您是否想要並行獲取多個頁面的數據? – 2013-02-14 20:00:18
我正在單個頁面中提取單個報表(網格)的數據。 – 2013-02-14 20:40:30