我有一个要求获取Price List Item
等均符合以下要求记录:
- 通过特定的价目表过滤器
- 通过特定的货币过滤器
- 由过滤器
Name
相关的Product
包含给定的字符串
我得到的第一个两分工作没有问题,但感觉像扩大不应对过滤很好。 我从一个“直”查询开始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
信息:“加入”操作的结果选择器必须返回一个匿名类型两个属性。
据我所知这是当你打的使用LINQ到CRM关于限制会发生什么.Where()
在多个实体一次......似乎不相关的!
这有什么错我的查询?
注:CRM 2013我使用的是On-Premise
,无需任何更新汇总/服务包。
另请注意:等效的SQL,因为可以预计,完美的作品