在Microsoft Dynamics CRM中如何查询attributemask值对应的字段含义
115字段含义查询方法
AttributeMask里的数值是salesorder实体属性的元数据编号,无需访问底层数据库,线上部署环境也可以通过以下两种方式直接查询:
- 用XrmToolBox的Metadata Browser插件:连接到你的CRM环境后,定位到salesorder(销售订单)实体,打开其属性列表,每个属性的详情页都会标注对应的AttributeId整数值,找到数值为115的条目即可直接查看该字段的逻辑名、显示名和业务含义。
- 调用Web API查询元数据:直接请求接口
[你的CRM环境域名]/api/data/v9.2/EntityDefinitions(LogicalName='salesorder')/Attributes?$select=LogicalName,DisplayName,遍历返回结果找到对应数值115的属性即可,无需安装额外工具。
原开发人员取值逻辑
这个编号是CRM实体属性的固定元数据值,标准字段的编号在同版本CRM实例中通用,自定义字段的编号在创建时自动生成且不会变动。原开发人员大概率就是通过上述元数据查询方式获取到折扣字段对应的编号后,硬编码到代码中的。你查询stringmap只到113的原因是stringmap仅存储选项集类字段的选项值映射,和属性的元数据编号完全是两个体系,无法通过stringmap查询到该值。
你当前的代码可以优化查询逻辑,减少不必要的全量数据拉取:
List<Audit> audit = myServiceContext.AuditSet .Where(a => a.ObjectId.Id == x.Id && a.AttributeMask.Contains("115")) .ToList();
如果担心存在编号前缀包含115的误匹配情况(比如1150),可以额外加逗号判断规则,判断值包含,115,、115,或者,115即可。
内容的提问来源于stack exchange,提问作者Buzz
相关产品推荐
相关产品推荐

