注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

微软MVP罗勇的博客

微软MVP罗勇,www.luoyong.me

 
 
 

日志

 
 

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

2015-10-13 19:51:58|  分类: 操作元数据 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复159或者20151013可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me!
Dynamics CRM是基于元数据(metadata)的信息系统,做一些比较通用的功能时候需要查询元数据,本篇博文先介绍一个简单的例子,查询实体主字段(Primary Attribute)的名称及其值。
我们知道新建实体的主字段的名称总是开发者前缀加上 _name,但是有些标准实体却不是,比如联系人实体(contact),用户实体(systemuser)等等,但是有一个共同点就是,主字段的字段类型总是单行文本,查找字段显示的是查找实体的主字段的值。
在CRM中查看实体的主字段很方便,在解决方案中点击实体,切换到 主字段 这个tabpage即可。
Dynamics CRM使用元数据之一:查询实体的主字段(托管代码版本) - 罗勇 - 微软MVP-罗勇的博客
 
当然还可以通过查看实体元数据中的 PrimaryNameAttribute 属性来确定。
Dynamics CRM使用元数据之一:查询实体的主字段(托管代码版本) - 罗勇 - 微软MVP-罗勇的博客
 
本篇博文介绍的通过代码来查看并获取值,我们先来看一个标准的实体,也就是用户实体,代码如下:

        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();
        }


代码运行结果如下:
Dynamics CRM使用元数据之一:查询实体的主字段(托管代码版本) - 罗勇 - 微软MVP-罗勇的博客
 
我们再拿一个自定义的实体来做试验,代码如下:

        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使用元数据之一:查询实体的主字段(托管代码版本) - 罗勇 - 微软MVP-罗勇的博客
 
都是符合要求的。
素格格新疆特产店--做最好新疆特产的搬运工。 本店由博主的新疆老婆开设,搬运各种最好的新疆特产,是自用,送礼,年货,孝敬长辈特别是(岳)父母的首选!素格格新疆特产店淘宝网址是 http://sugege.taobao.com 欢迎自助购买。
实体状态字段(statecode,statuscode)介绍、插件注册及获取更改状态前后的值 - 罗勇 - 微软MVP-罗勇的博客

  评论这张
 
阅读(323)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018