2014-02-07 100 views
0

如果我有一個查詢 - HTTP:///Northwind.svc/Orders過濾=貨運GT 30WCF數據服務查詢執行

我相信,執行WCF數據服務查詢 -

  1. 當實體集枚舉時,例如在foreach期間。
  2. 將查詢分配給List集合或調用First或Single時。
  3. 當顯式調用Execute或BeginExecute方法時。

我question- 1.如果我瀏覽到上述網址或

  1. 如果我使用jQuery調用上面的網址,並列舉結果。

在什麼時候執行了我的查詢?

我相信我的問題#2它會在枚舉整個結果的同時執行。如果是這樣,我如何避免這種情況,以便在一次網絡調用中獲得所有結果。

由於WCF數據服務的

回答

1

客戶端使用限制LINQ提供程序訪問查詢結果。與其他LINQ提供者類似,它使用所謂的延遲查詢執行,即它不執行查詢(在OData是HTTP調用的情況下),直到它需要結果。所以很容易找出何時發生HTTP調用。當然,它發生在調用First(),Single()等,在聚合調用如Count()上,在結果枚舉上。

當涉及到JavaScript和jQuery時,它與WCF數據服務的客戶端無關。我不是一個UI開發人員,但AFAIK jQuery有它自己的HTTP幫助器方法,所以你必須檢查它們是如何實現的。但總的來說,你有一個OData請求,你不能真正地分割它的執行:一旦你將它發送到OData提要,你將得到所有的結果。如果您需要限制提取的結果數量,則可以使用$ count子句擴展查詢URI。