簡體   English   中英

如何通過數據服務中的查詢攔截器創建模型? 數據

[英]How can I create a model by a query interceptor in Data Services? OData

最近幾天我一直在尋找答案,但是沒有找到答案,這就是為什么我決定在這里寫。

問題如下:我有一個數據服務,其中該模型由數據服務提供者(在本例中為反射提供者)創建。 很簡單 但是我們要使用查詢攔截器而不是使用查詢攔截器來過濾數據來創建數據模型。

我想實現什么:/service.svc/search?fromDate = x&toDate = y

我有一個名為search的模型,它是搜索數據和搜索結果的模型,反射提供程序然后將fromDate和toDate這兩個參數作為變量保存,然后將它們作為參數放入存儲的sql過程中。 然后,搜索結果將保存在模型中。

我發現很難解釋這一點,因為這不是您使用查詢攔截器和反射提供程序執行的常見操作。

通常會使用查詢攔截器,並將其應用於完成的數據模型以過濾掉模型的某些部分。

有誰知道如何實現這一目標?

我知道如何參數查詢攔截- http://ashwini47-tts.blogspot.in/2012/03/how-to-parametrized-queryinterceptor-in.html -但不知道如何將參數發送到的DbContext / objectcontext。

查詢攔截器並不意味着可以為您解決此問題。 您有兩種選擇:

1)服務操作,它接受兩個參數並返回一組結果。 實施起來非常容易,但是您還需要公開“所有”結果集。 不知道這對您是否可行。 有可能的解決方法,但是它們有些復雜,並且比下面的#2更復雜。

2)將查詢描述為OData查詢。 所以類似〜/ searchResults?$ filter = date gt和date lt。 然后從您的searchResults IQueryable屬性返回一個自定義IQueryable實現,該實現處理表達式樹,該表達式樹包含過濾器,提取from和to值,並通過運行存儲過程評估查詢。 這肯定是更多的工作,但它是OData的查詢方式,是#1中的服務操作不適合您的空間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM