关注本人微信和易信公众号: 微软动态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. PostgreSQL 中字段类型varchar

    PostgreSql数据库中varchar类型与sql server中字段用法有差别,PostgreSql中如果字段设置为varchar类型长度为10,则无论存字母.数字或其它符号,长度最大为10个, ...

  2. iOS事件传递和事件响应者链 20170810

    一.事件响应者链 事件传递和事件响应链 区别 事件的传递和响应的区别: 事件的传递是从上到下(父控件到子控件),事件的响应是从下到上(顺着响应者链条向上传递:子控件到父控件. 引出 当我们手指触摸屏幕 ...

  3. 单词倒序(java)

    如何将一串单词组成的字符串倒序呢?如:" we go to school" 变成"school to go we "java代码实现: public stati ...

  4. git 配置本地用户名称 和 邮件名称

    很多次配置git用户名和邮箱了,总是会忘记,然后在网络上搜索,今天进行记录下来,防止遗忘: # 查看用户名和邮箱地址git config user.name git config user.email ...

  5. Linux—修改文件权限、文件拥有者以及文件所在组

    修改文件权限——chmod 修改文件拥有者——chown 修改文件所属组群——chgrp

  6. ping测试丢包率

    测试环境:Centos 6.4 增加参数:-i 例如: #ping -i 0.01 172.16.3.1 则每隔0.01秒ping一次

  7. vue/cli2.0优化

    vue/cli2.0 脚手架 在项目写完了之后, 运行npm run build --report可以看出这个项目的资源占比情况.可以看出整个项目哪一个资源在整个项目占比最大.它会自动打开一个可视化的 ...

  8. Less(2)

    1.先判断注入类型 (1)首先看到要求,要求传一个ID参数,并且要求是数字型的:?id=1 (2)输入?id=1' and 1=1 出现错误 (3)输入 ?id=1 and 1=1 页面显示正常 (4 ...

  9. 设计模式-FlyWeight(结构型模式) 针对 需要创建大量对象的情形,被共享的状态作为内部状态,不被共享的状态作为外部状态

    以下代码来源: 设计模式精解-GoF 23种设计模式解析附C++实现源码 //Flyweight.h #pragma once #include<string> class FlyWeig ...

  10. java启动参数

    java命令启动应用所使用的参数,基本是用于JVM的,某种程度上也叫做JVM参数.总的来说,java启动参数共分为三大类,分别是: 标准参数(-):相对稳定的参数,每个版本的JVM都可用. 非标准X参 ...