Dynamics CRM 2015 Update 1 系列(4): 自己定义主键 - Alternate Keys
Alternate Keys。 还是和系统集成相关的一个重量级Feature。使用该Feature能极大的提高开发数据集成接口的时间成本以及接口的执行效率。
在之前的Dynamics CRM 版本号中。我们仅仅能通过Entity的主键去推断记录的唯一性,如今我们能够通过使用Alternate Keys来推断记录的唯一性。更有趣的则是。我们能够自己去配置实体的Alternate Keys。 
眼下Alternate Key仅仅支持文本和数字类型的字段,而且每一个实体最多仅仅能配置5个Key。只是这已经非常不错了,配置方法也非常easy:Setting–>Customization–>Entity–>Key 
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描写叙述" title="">
假设我们输入的数据违法了Alternate Key规则,其会提演示样例如以下错误: 
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描写叙述" title="">
改功能对终端用户没什么太大的影响,可是对广大的开发者以及系统管理员来说,其真实一个非常牛X的功能,有了它,从此省去了花在字段映射上的时间了。以下这个代码片段演示了,怎么获取一个Alternate Key的员数据 。以及怎么使用它去替换Entity Primary Key
RetrieveEntityKeyRequest req1 = new RetrieveEntityKeyRequest();
            req1.LogicalName = "new_accountkeyforerp";
            req1.EntityLogicalName = "account";
            RetrieveEntityKeyResponse rep1 = CrmSvc_Online.Execute(req1) as RetrieveEntityKeyResponse;
            string accountNumber = "2";
            string accountName = "Account2";
            Entity acc1 = new Entity("account");
            acc1.Id=Guid.Parse("{1B9D2BC3-7A0F-4D94-950A-B367D032092F}");
            acc1.Attributes.Add("accountnumber", accountNumber);
            acc1.Attributes.Add("name", accountName);
            UpsertRequest upsertReq1=new UpsertRequest();
            upsertReq1.Target=acc1;
            CrmSvc_Online.Execute(upsertReq1);
            //uses unique key to update/delete account
            KeyAttributeCollection keys=new KeyAttributeCollection();
            keys.Add("accountnumber",accountNumber);
            keys.Add("name",accountName);
            Entity acc2 = new Entity("account",keys);
            acc2.Attributes.Add("telephone1", "1522222222");
            CrmSvc_Online.Update(acc2);
            Entity acc3 = new Entity("account", keys);
            DeleteRequest req = new DeleteRequest();
            req.Target = new EntityReference("account", keys);
            CrmSvc_Online.Execute(req);
假设大家的项目里面涉及到大量的数据接口,最好还是试试该方法来设计你们的程序吧。
Dynamics CRM 2015 Update 1 系列(4): 自己定义主键 - Alternate Keys的更多相关文章
- Dynamics CRM 2015 Update 1 系列(3): API的那些事 - Old APIs VS New APIs
		
今天我们来看看API的变化.新系统中,去掉了一些经常使用的数据处理API,比如:SetStateRequest, SetBusinessUnitRequest, SetParentBusinessUn ...
 - Dynamics CRM - 如何通过 C# Plugin 给 Contact的 主键(FullName)赋值
		
Contact 是 CRM 默认带有的 Entity,主键是 <FullName>,根据开发需求,与主键相关的字段都被设置成隐藏,包括了<Full Name>,<Firs ...
 - 在标准实体特殊消息上注册插件及Dynamics CRM 2015中计算字段的使用
		
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复157或者20151005可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 前面的 插件系列博客教程 讲述了 ...
 - Dynamic CRM 2015学习笔记 系列汇总
		
这里列出所有 Dynamic CRM 2015学习笔记 系列文章,方便大家查阅.有任何建议.意见.需要,欢迎大家提交评论一起讨论. 本文原文地址:Dynamic CRM 2015学习笔记 系列汇总 一 ...
 - Dynamics CRM 2013 SP1 升级到Dynamics CRM 2015
		
首先截图一下我要升级的Dynamics CRM 2013版本如下图,可以看到是打了SP1后的CRM 2013. 运行CRM 2015简体中文版的安装文件CRM2015-Server- ...
 - Dynamics CRM 2015/2016新特性之三十二:新增乐观并发处理
		
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复215或者20160328可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...
 - 在Dynamics CRM 2015中通过3CX插件(以及3CX windows phone)拨出电话
		
背景 在On-premises部署的Dynamics CRM中实现通过网页拨通客户电话的功能 要点 3CX 提供了开箱即用的Dynamics CRM Solution,只需要在Microsoft Dy ...
 - Dynamics CRM 2015 Online  Update1  UI界面的更新变化
		
听说出  Dynamics CRM 2015 Online Update1了,立马跑去申请了个30天试用版简单的看了下,UI上的变化还是让人耳目一新的,也可能是被CRM2013的UI蹂躏太久了没 ...
 - Microsoft Dynamics CRM 2015 and Microsoft Dynamics CRM 2016 Performance and Scalability Documentation
		
摘要: 本人微信公众号:微软动态CRM专家罗勇 ,回复285或者20181126可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me ...
 
随机推荐
- REST构架风格介绍之一:状态表述转移
			
转载自:Todd Wei http://www.cnblogs.com/weidagang2046/archive/2009/05/08/1452322.html REST(Representat ...
 - C++中一些类和数据结构的大小的总结
			
针对class,虚函数等情况写了一些代码测试. #include <stdio.h> class A { }; class B { public: void f(); void g(); ...
 - 算法: skiplist 跳跃表代码实现和原理
			
SkipList在leveldb以及lucence中都广为使用,是比较高效的数据结构.由于它的代码以及原理实现的简单性,更为人们所接受. 所有操作均从上向下逐层查找,越上层一次next操作跨度越大.其 ...
 - 一步一步学android控件(之六) —— MultiAutoCompleteTextView
			
今天学习的控件是MultiAutoCompleteTextView . 提到MultiAutoCompleteTextView 我们就自然而然地想到AutoCompleteTextView ,就想知道 ...
 - [leetcode]Pascal's Triangle @ Python
			
原题地址:https://oj.leetcode.com/problems/pascals-triangle/ 题意: Given numRows, generate the first numRow ...
 - jquery ajax跨域
			
JSONP是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问 方法一: jsonp之 getJSON js var ...
 - 大数据开发实战:Hadoop数据仓库开发实战
			
1.Hadoop数据仓库架构设计 如上图. ODS(Operation Data Store)层:ODS层通常也被称为准备区(Staging area),它们是后续数据仓库层(即基于Kimball维度 ...
 - Kendall's tau-b(肯德尔)等级相关系数
			
Kendall's tau-b(肯德尔)等级相关系数:用于反映分类变量相关性的指标,适用于两个分类变量均为有序分类的情况.对相关的有序变量进行非参数相关检验:取值范围在-1-1之间,此检验适合于正方形 ...
 - Introduction to the visual formatting model
			
原文:https://www.w3.org/TR/CSS2/visuren.html#block-formatting --------------------------------------- ...
 - "Ext 4.1 Grid 'el.dom' 为空或不是对象"问题的解决
			
我在使用Ext 4.1 做Grid,IE下冒出这么个错误,导致表格完全显示不出来,换另外一个IE浏览器,有没有问题,呵呵,百思不得其解啊... 后来得出答案,即在grid相关代码周围套上Ext.onR ...