• Dynamics 365组织服务使用Query Expression查询数据时候请谨慎使用ConditionOperator.Contains


    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),欢迎关注我的微信公众号 MSFTDynamics365erLuoYong ,回复418或者20200720可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!

    看到这个操作符Contains,很多人都会理解为包含的意思。在使用组织服务查询数据时候,有的人就会使用这个操作符,ConditionOperator.Contains。但是一执行查询,就会产生Generic SQL Error的异常,怎么回事?

    对这个操作符的解释请参考官方文档: ConditionOperator EnumType 。解释是:For an attribute enabled for full-text indexing: the string contains another string. 

    可以知道,这个操作符号是用于启用了全文索引的字段搜索。如果被搜索的字段没有启用全文索引,就会报Generic SQL Error的异常。

    如果真的要对普通字段执行包含某些字符的搜索怎么办?可以通过高级查找功能的包含(Contains)操作符来查看究竟用的是啥。

    可以知道,用的是类似如下的条件,可以看到,用的操作符是 like ,而不是Contains 。官方文档对 like操作符的解释是 The character string is matched to the specified pattern. 

    <condition attribute="ly_name" operator="like" value="%搜索值%" />

    如果一定要用Query Expression来查询数据的话,也可以使用包含,这时候用 like就可以,类似如下的查询条件即可。

    queryExpression.Criteria.AddCondition("ly_name", ConditionOperator.Like, "%搜索值%");

    Web API也有contains操作符号,具体请参考 Query Data using the Web API ,这个就是大家理解的包含的意思,示例如下:

    https://luoyongdemo.crm5.dynamics.com/api/data/v9.1/ly_order?$filter=contains(ly_name,'2020')

    Web API除了支持contains之外,还支持endswith 和 startswith ,用法和contains类似,我就不举例子了。

  • 相关阅读:
    BooStrap4文档摘录: 1. Layout
    PistgreSQL9.6手册(基础摘录)
    HTML 5与CSS 3权威指南(第3版·上册)
    Excel PPT 2013办公应用从入门到精通
    EclipseWTPWeb应用开发
    Photoshop移动UI设计实用教程(第2版)
    高手速成:EDIUS专业级视频与音频制作从入门到精通
    黑客攻防从入门到精通
    利用Python进行数据分析(原书第2版)
    Linux二进制分析
  • 原文地址:https://www.cnblogs.com/luoyong0201/p/Dynamics_365_Organization_Service_Query_Expression_Caution_With_Contains_Operator.html
Copyright © 2020-2023  润新知