2015-06-19 81 views
2

我是OData的新手,我有一個關於在我的.NET Web API中使用它的問題。在我的Web API,如果我有以下的Get方法控制器:OData&.NET Web API

[EnableQuery()] 
public IQueryable<Product> Get() 
{ 
    var productRepository = new ProductRepository(); 

    return productRepository.Retrieve().AsQueryable(); 
} 

是否有必要爲我所應用的OData的查詢選項之前檢索所有的產品還是有辦法,我只能用檢索產品OData查詢選項?

我不希望必須檢索所有可能超過100,000的產品,然後根據我的標準應用OData查詢選項才能返回10條記錄。

感謝您對此問題的任何幫助。

回答

0

惡意或天真的客戶端可能能夠構建一個查詢,該查詢需要很長時間才能執行。在最壞的情況下,這可能會中斷 訪問您的服務。

[Queryable]屬性是一個操作篩選器,它解析,驗證 並應用查詢。該篩選器將查詢選項轉換爲LINQ表達式 。當OData控制器返回IQueryable類型時,IQueryable LINQ提供程序將LINQ表達式轉換爲 查詢。因此,性能取決於使用的LINQ提供程序,即 ,也取決於數據集或 數據庫架構的特定特徵。

如果您知道所有客戶端都是可信的(例如,在 企業環境中),或者如果數據集很小,則查詢 性能可能不成問題。否則,you should consider the following recommendations

我你的情況,你會感興趣的:

// Enable server-driven paging. 
[Queryable(PageSize=10)]