Dynamics CRM 2015 Update 1 系列(3): Old APIs VS New APIs

今天我们来看看API的变化,新系统中,去掉了一些常用的数据处理API,例如:SetStateRequest, SetBusinessUnitRequest, SetParentBusinessUnitRequest等。现在我们做这类型的操作不需要单独的调用这类API了,我们可以直接构造我们期望的Entity对象,并将其推送到服务端,系统将会安装其内容做相应的处理。

俗话说,外行看热闹,内行看门道。虽然只是简单的去掉了几个API,但是对于新系统的内部架构应该是发生了翻天覆地的重构。对于我们开发者来说,这样的调整是绝对的好消息,因为我们可以再设计系统脚本或者是数据接口的时候,极大的减少与服务器的交互次数,也就是说,如果我们用这个新的改变去重构之前的接口程序,性能会得到极大的提升。

本文将不讨论所有涉及到改动的API,而是简单介绍几个我们日常80%会使用的API:AssignRequest 和SetStateRequest。简单介绍它们在调整后应该怎么使用,为大家起到抛砖引玉的效果。

可以参考下面的代码片段,这里我们对一条客户记录进行了2种操作:分派和设置属性。大家也可以发现,所有的这些操作都是在Entity Level实现的,并没有调用额外的Requests。

            //set state
            Entity testEntity = null;
            Guid userId = Guid.Parse("{7651C7AF-8B18-E511-80E0-3863BB2E8C90}");
            Guid userId2 = Guid.Parse("{461C2001-C724-4DFE-BA6E-ED2D274784D2}");
            Guid teamId=Guid.Parse("{BC2D90A5-F221-E511-80E1-3863BB2E7CD8}");
            Guid parentBUId=Guid.Parse("{4FE4929F-F221-E511-80E1-3863BB2E7CD8}");
            Guid BUId=Guid.Parse("{A4448DF6-F221-E511-80E1-3863BB2E7CD8}");
            QueryExpression query4Acc = new QueryExpression("account");
            query4Acc.ColumnSet = new ColumnSet(true);

            EntityCollection accounts = CrmSvc_Online.RetrieveMultiple(query4Acc);
            if (accounts.Entities.Count > 0)
            {
                testEntity = accounts.Entities[0];
            }

            //set owner
            if (testEntity != null)
            {
                testEntity["ownerid"] = new EntityReference("systemuser",userId);
            }

            //set state
            if (testEntity != null)
            {
                testEntity["statecode"] = new OptionSetValue(1);
                testEntity["statuscode"] = new OptionSetValue(2);
            }

            CrmSvc_Online.Update(testEntity);

当然,现在系统仅仅重构了为数不多的API,相信随着后续的跟新,系统将会更便利的开发体验给广大的开发人员。下面是已经支持Entity Level调用的API,当然其对于的API将会被废弃:D

  1. AssignRequest –> Entity.OwerId
  2. SetStateRequest –>Entity.StateCode
  3. SetParentSystemUserRequest –>SystemUser.ParentSystemUserId
  4. SetParentTeamRequest –>Team.BusinessUnitId
  5. SetParentBusinessUnitRequest –>BusinessUnit
  6. SetBusinessEquipmentRequest –>Equipment.BusinessUnitId
  7. SetBusinessSystemUserRequest –>SystemUser.BusinessUnitId

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-08 11:45:38

Dynamics CRM 2015 Update 1 系列(3): Old APIs VS New APIs的相关文章

Dynamics CRM 2015 Update 1 系列(1): 简介

Dynamics CRM 2015 Update 1 终于推出了,带来了一大堆的功能以及一大堆的惊喜,最让博主高兴的当然还是Dynamics CRM 界面风格的改变.我们终于可以摆脱那些非人性化的设计,新版本的界面给人耳目一新,太多亮点. Update1 当然不仅仅带了惊艳的界面改变,也带来了大量的新功能:更好的系统集成的开发体验,更人性化的APIs,更高效的自定义代码.小伙伴们先不急,我会在后续的文章中将其一一道来. 我们先来看看让我惊艳不已的界面改变吧: 全新的导航风格 界面配置界面 将样式

Dynamics CRM 2015 Update 1 系列(7): 消息事务 - ExecuteTransactionRequest

Dynamics CRM 2015 Update1 现在能将多个消息放在同一个事务管道里面执行了.这确实是个极好的Feature呀,这样我们可以灵活的组合不同的消息来实现复杂的业务需求而不用担心处理失败后的回滚细节. 使用方法也是非常的简单,调用ExecuteTransactionRequest消息,并将想要放入事务的消息放入该事务中,并提交至服务器,统一执行.我们看看下面的代码片段: ExecuteTransactionRequest req = new ExecuteTransactionR

Dynamics CRM 2015 Update 1 系列(2): Upsert API

Dynamics CRM 2015 Update1 推出了一个重量级的改变 "Upsert Request", 相信做过接口的朋友们都碰到过这样的场景,在向CRM写入数据的时候,因为无法确定该数据是否已经在CRM系统中存在,需要先做一次查询操作然后在进行后续的创建或更新操作.这样的数据写入流程无疑会大大的降低数据同步性能,因为在同步一条数据的同时,我们需要与服务器交互两次. 随着Upsert Request的推出,我们可以对这样的情况说再见了,我们把数据的检测逻辑交给系统进行处理,我们

Dynamics CRM 2015 Update 1 系列(4): 自己定义主键 - Alternate Keys

Alternate Keys. 还是和系统集成相关的一个重量级Feature.使用该Feature能极大的提高开发数据集成接口的时间成本以及接口的执行效率. 在之前的Dynamics CRM 版本号中.我们仅仅能通过Entity的主键去推断记录的唯一性,如今我们能够通过使用Alternate Keys来推断记录的唯一性.更有趣的则是.我们能够自己去配置实体的Alternate Keys. 眼下Alternate Key仅仅支持文本和数字类型的字段,而且每一个实体最多仅仅能配置5个Key.只是这已

Dynamics CRM 2015 Update 1 系列(4): Alternate Keys

Alternate Keys, 还是和系统集成相关的一个重量级Feature.使用该Feature能极大的提高开发数据集成接口的时间成本以及接口的运行效率. 在之前的Dynamics CRM 版本中,我们只能通过Entity的主键去判断记录的唯一性,现在我们可以通过使用Alternate Keys来判断记录的唯一性,更有趣的则是,我们可以自己去配置实体的Alternate Keys. 目前Alternate Key只支持文本和数字类型的字段,并且每个实体最多只能配置5个Key,不过这已经很不错了

Dynamics CRM 2015 Update 1 系列(3): API的那些事 - Old APIs VS New APIs

今天我们来看看API的变化.新系统中,去掉了一些经常使用的数据处理API,比如:SetStateRequest, SetBusinessUnitRequest, SetParentBusinessUnitRequest等. 如今我们做这类型的操作不须要单独的调用这类API了,我们能够直接构造我们期望的Entity对象.并将其推送到服务端.系统将会安装其内容做对应的处理. 俗话说,外行看热闹.内行看门道. 尽管不过简单的去掉了几个API,可是对于新系统的内部架构应该是发生了翻天覆地的重构. 对于我

Microsoft Dynamics CRM 2015 for Outlook 2010/2013 安装教程

Microsoft Dynamics CRM 2015 for Outlook 安装教程 注: 安装过程必须电脑要连上网,不然可能安装出错,最下面会总结出错log日记 . 查看下列视频: Microsoft Dynamics CRM 2015 中的 CRM for Outlook 配置: http://www.youtube.com/embed/4lAUXAiLId4  (此网站需要在国外或翻墙才能看) 如需看更详细的操作过程,可以访问以下网址: 微软官方详细介绍. https://techne

Dynamics CRM 2015 New Feature (4): Calculate Field & Rollup Field

Calculate Field & Rollup Field 可以说是2个比较给力的Feature,随着Dynamics CRM版本的不断更新,这样激动人心的feature可是一个接一个的冒出来.就Calculate Field和Rollup Field来说,之前实现这样的功能都需要开发人员参与,但是现在只需要简单的手工配置就可以简单完成. Calculate Field--故名思意,就是级联字段,通过多个字段的值计算并将结果赋值给最终字段,之前做这样的开发是离不开Javascript,并且更给

Dynamics CRM 2013 SP1 升级到Dynamics CRM 2015

首先截图一下我要升级的Dynamics CRM 2013版本如下图,可以看到是打了SP1后的CRM 2013. 运行CRM 2015简体中文版的安装文件CRM2015-Server-CHS-amd64.exe,解压后提示如下: 囧,看了下没有这个名叫Microsoft Dynamics CRM Connector for SQL Server Reporting Services的程序啊,我猜应该是Dynamics CRM Reporting Extensions,果然下载这个以后,安装就没有报