关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复159或者20151013可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me!
Dynamics CRM是基于元数据(metadata)的信息系统,做一些比较通用的功能时候需要查询元数据,本篇博文先介绍一个简单的例子,查询实体主字段(Primary Attribute)的名称及其值。
我们知道新建实体的主字段的名称总是开发者前缀加上 _name,但是有些标准实体却不是,比如联系人实体(contact),用户实体(systemuser)等等,但是有一个共同点就是,主字段的字段类型总是单行文本,查找字段显示的是查找实体的主字段的值。
在CRM中查看实体的主字段很方便,在解决方案中点击实体,切换到 主字段 这个tabpage即可。
当然还可以通过查看实体元数据中的 PrimaryNameAttribute 属性来确定。
本篇博文介绍的通过代码来查看并获取值,我们先来看一个标准的实体,也就是用户实体,代码如下:
        static void Main(string[] args)
{
var service = GetOrganizationService();
WhoAmIRequest whoAmIRequest = new WhoAmIRequest();
WhoAmIResponse whoAmIResponse = service.Execute(whoAmIRequest) as WhoAmIResponse;
const string entityLogicalName = "systemuser";
Guid entityId = whoAmIResponse.UserId;
RetrieveEntityRequest request = new RetrieveEntityRequest
{
EntityFilters = EntityFilters.Entity,
LogicalName = entityLogicalName
};
RetrieveEntityResponse response = service.Execute(request) as RetrieveEntityResponse;
string primaryNameAttribute = response.EntityMetadata.PrimaryNameAttribute;
Console.WriteLine("实体逻辑名称为" + entityLogicalName + "的主字段是" + primaryNameAttribute);
Entity entity = service.Retrieve(entityLogicalName, entityId, new ColumnSet(primaryNameAttribute));
Console.WriteLine("ID为" + entityId.ToString() + ",实体名称为" + entityLogicalName + "的主字段的值是" + entity.GetAttributeValue<string>(primaryNameAttribute));
Console.WriteLine("程序运行完成!");
Console.ReadKey();
}
代码运行结果如下:
我们再拿一个自定义的实体来做试验,代码如下:
        static void Main(string[] args)
{
var service = GetOrganizationService();
WhoAmIRequest whoAmIRequest = new WhoAmIRequest();
WhoAmIResponse whoAmIResponse = service.Execute(whoAmIRequest) as WhoAmIResponse;
const string entityLogicalName = "new_test";
Guid entityId = new Guid("D7D08CEA-5051-E511-80D2-000D3A802FAC");
RetrieveEntityRequest request = new RetrieveEntityRequest
{
EntityFilters = EntityFilters.Entity,
LogicalName = entityLogicalName
};
RetrieveEntityResponse response = service.Execute(request) as RetrieveEntityResponse;
string primaryNameAttribute = response.EntityMetadata.PrimaryNameAttribute;
Console.WriteLine("实体逻辑名称为" + entityLogicalName + "的主字段是" + primaryNameAttribute);
Entity entity = service.Retrieve(entityLogicalName, entityId, new ColumnSet(primaryNameAttribute));
Console.WriteLine("ID为" + entityId.ToString() + ",实体名称为" + entityLogicalName + "的主字段的值是" + entity.GetAttributeValue<string>(primaryNameAttribute));
Console.WriteLine("程序运行完成!");
Console.ReadKey();
}
运行结果如下:
 
都是符合要求的。
 

Dynamics CRM使用元数据之一:查询实体的主字段(托管代码版本)的更多相关文章

  1. Dynamics CRM 2011 通过数据库修改实体字段的长度需要注意的地方

    一.首先打开数据库,我这里以SQL Server 2012数据库为例. 1.选择工具—>选项 ,如图1 图 1 2. 选择表设计器和数据库设计器—>阻止保存要求重新创建表的更改(S)把前面 ...

  2. Microsoft Dynamics CRM 2013 Js Odata 查询

    实现功能:   在新建记录时,(大区,省区,城市)的值默认为当前用户的值.tips:字段均为lookup类型; function Default_region(){ var fromtype=Xrm. ...

  3. Dynamics CRM 插件Plugin中获取和更新时间字段值的准确转换

    前面两篇介绍了后台代码通过组织服务获取更新时间字段.窗体javascript通过Odata获取更新时间字段,最后篇来实验下在插件中的获取和更新时间字段是否需要时制的转化,为何说是最后篇呢,因为在CRM ...

  4. Dynamics CRM项目实例之六:积分管理,汇总字段,计算字段,快速查看视图

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复137或者20141228可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me!        博文讲述的主要是如 ...

  5. CRM ORDER SEARCH增强查询条件(已有字段)

    ORDER_H表增强的两个字段,很早了,非AET,非EEWB,所以也加不到标准的搜索界面. GENIL_MODEL_BROWSER找到对应的查询和结果结构,append进字段:ZZZBRAND. 然后 ...

  6. Dynamic 中修改实体中主字段的长度

    select EntityId,* from MetadataSchema.Entity where Name='dji_incidentaddress' SELECT TOP 100 [Attrib ...

  7. 在标准实体特殊消息上注册插件及Dynamics CRM 2015中计算字段的使用

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复157或者20151005可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 前面的 插件系列博客教程 讲述了 ...

  8. Dynamics CRM实体系列之视图

    这一节开始讲视图.视图在Dynamics CRM中代表着实体的数据展示列表,通过这个列表可以对数据进行一个初步预览,也可以进行一些数据的定向筛选和搜索进行精确的浏览一部分数据.同时视图也是查看详细实体 ...

  9. Microsoft Dynamics CRM 2013 --针对特定实体,取消保存功能(包含自动保存)

    AutoSave 是 Microsoft Dynamics CRM 2013 一个新特性. 但AutoSave的有效范围是[所有实体],不允许针对特定某一实体进行设置. 所以,若想针对特定实体进行设置 ...

随机推荐

  1. 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU特性那些事(2)- RT1052DVL6性能实测(CoreMark)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列MCU的性能. 在前面的文章 i.MXRTyyyy微控制器概览 里,痞子衡给大家简介过恩智浦半导体在2 ...

  2. 使用vue-cli创建工程的时候提示vue-cli Failed to download repo vuejs-templates/webpack-simple:self signed certificate in certificate chain的解决方法

    最近在使用 vue-cli 脚手架创建项目的时候,遇到 webpack-simple 模板下载不成功的情况,提示 vue-cli Failed to download repo vuejs-templ ...

  3. Kubernetes的三种探针

    k8s支持存活livenessProbe和就绪readinessProbe两种探针 两种探针都支持以下三种方式 1.exec 通过执行shell命令的方式,判断退出状态码是否是0 示例 exec: c ...

  4. SpringCloud的入门学习之概念理解、Feign负载均衡入门

    1.Feign是SpringCloud的一个负载均衡组件. Feign是一个声明式WebService客户端.使用Feign能让编写Web Service客户端更加简单, 它的使用方法是定义一个接口, ...

  5. C# winfrom调用摄像头扫描二维码(完整版)

    前段时间看到一篇博客,是这个功能的,参考了那篇博客写了这个功能玩一玩,没有做商业用途.发现他的代码给的有些描述不清晰的,我就自己整理一下发出来记录一下. 参考博客链接:https://www.cnbl ...

  6. css盒子布局,浮动布局以及显影与简单的动画

    08.05自我总结 一.盒子布局 1.盒子布局的组成 margin border padding content 2.margin margin是外边距,控制盒子的显示位置相对于他的上一级 left. ...

  7. Python语法易错点

    列表.数组赋值 a = [1,6] b = a * 2 b[0] = -9999 print(a) print(b) [1, 6] [-9999, 6, 1, 6] a = [1,6] b = a b ...

  8. 剑指offer笔记面试题11----旋转数组的最小数字

    题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5 ...

  9. XPath匹配标签使用text()判断获取结果失败/为空的问题及解决方法

    XPath当匹配标签判断text()判断内容失败的问题及解决 问题复现 在爬取网站的时候我使用XPath去抓取网页上的内容,XPath表达式来精准获取需要的标签内容. 当我对如下一段html代码编写X ...

  10. 剑指offer 25:二叉树中和为某一值的路径

    题目描述 输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长度大 ...