我有一個數據庫,最終將包含數千條記錄,並將使用Silverlight自動完成框控件和WCF RIA服務搜索此列表。我使用的基本實現,而不在我的域數據源的「GetXXXQuery」任何參數:Silverlight自動完成和WCF RIA服務:整個列表是否返回給客戶端?
public IQuerable<XXX> GetXXXs()
{
return this.ObjectContext.XXXs;
}
我將使用「姓名」作爲ValueMemberPath使用在自動完成此查詢的返回值。
我的對象列表現在很小,所以列出所有記錄的速度非常快。我的問題是:一旦我的記錄列表變得更大,或者如果有更多人訪問服務器,此實現是否有效?它是否返回數據庫中的整個記錄列表,或者IQueryable對象是否允許基於我的自動填充框中的字符串進行查詢,從數據庫中有效返回一小部分記錄?
感謝,丹尼斯
HiTech Magic - 感謝您的回覆,但是您提到的數據網格和分頁使我懷疑......在這種情況下,查詢並不是由查詢器事後處理的,因此它會調用skip( n)。使用(m)返回的IQueryable? domaindatasource本身的查詢不需要頁面/頁面大小參數,對吧?我想我可以試着用提琴手看這個迴應......這可能會爲我澄清,但我想我會問。 –
2010-09-23 19:34:45
您提到了where子句......那是我認爲自動完成控件處理的東西,畢竟它具有諸如「開始於」或「包含」之類的模式,不區分大小寫,所有這些模式都需要被我的「GetXXX」查詢複製,這對我來說沒有意義。 – 2010-09-23 19:44:47
@丹尼斯病房:很對。有時候我會忘記打字而不去讀它。你確實可以在客戶端添加額外的子句。這是查詢的評估導致發送Linq到服務器。我會在正確的答案:)我的措辭 – 2010-09-23 20:09:37