0
我有一個要求獲取Price List Item
記錄等均符合以下要求:Dynamics CRM對擴展屬性的OData查詢過濾僅在沒有結果時才起作用?
- 過濾器通過特定的價目表
- 過濾器通過特定的貨幣
- 濾波由相關
Product
的Name
包含給定字符串
我得到了前兩個工作沒有問題,但它感覺像擴大不適應過濾。我從一個「直」查詢開始Product
實體:
.../ProductSet?$filter=substringof('sometext', Name)
Equivalent SQL (targeting the corresponding CRM filtered views for clarity):
SELECT * FROM FilteredProduct WHERE ProductNumber LIKE '%sometext%'
上面的查詢工作,我可以調整它,沒有任何問題。但是,如果我嘗試移動到ProductPriceLevel
(從而擴大與Product
的關係,這是product_price_levels
)我結束了這一點:
.../ProductPriceLevelSet?$expand=product_price_levels&$filter=substringof('sometext', product_price_levels/Name)
Equivalent SQL (again, targeting the relevant filtered views):
SELECT * FROM FilteredProductPriceLevel PPL JOIN FilteredProduct P
ON PPL.ProductId = P.ProductId WHERE P.ProductNumber LIKE '%sometext%'
有兩個不同的結果我看到:
- 如果該
$filter
沒有比賽,它工作正常,並返回查詢結果爲空 - 如果
$filter
相匹配的東西,我得到一個錯誤
代碼:-2147220970
信息:「加入」操作的結果選擇器必須返回一個匿名類型兩個屬性。
據我所知,這時候你打多個實體使用.Where()
一次......似乎不相關的關於LINQ到CRM的限制會發生什麼!
我的查詢出了什麼問題?
注意:我使用的CRM 2013是On-Premise
,沒有任何更新彙總/服務包。
另請注意:相當於SQL,因爲可以預計,完美的作品
你能寫出你試圖在odata中執行的等效SQL語句嗎?我對你如何嘗試應用過濾器感到困惑,並且SQL語句更具可讀性。 – Daryl 2014-09-11 14:48:11
Aye,對於添加到問題中的過濾視圖的等效SQL – Alex 2014-09-11 15:35:47