本篇继续来介绍两个web api的接口,一个是“Create related entities in one operation”即在一步操作中完成主实体的创建加关联实体的创建,一个是“Associate entities on create“即在创建记录的时候填充lookup字段。

先来说第一个api,老规矩直接上代码,稍微做下解释,注意下面的几点不存在先后顺序,我只是分开说明罢了

1、这里创建一个account实体记录

2、创建一条名为"John Smith"的contact记录(注意这条记录是新建的不是已经存在的),赋值给account中的primarycontactid(与联系人关联的lookup字段)属性字段

3、创建一条名为"测试联系人"的contact记录,account记录和这条测试联系人记录是1:N的关系,也就是说这里的contact记录可以创建多条

4、在第3点中创建的contact记录中再关联task记录,原理同第三点

var entity =new Object();
entity["name"] = 'Create related entities';//文本 var contact=new Object();
contact["firstname"]="John";
contact["lastname"]= "Smith";
entity["primarycontactid"]=contact; var contact_customer_accounts=new Array();
contact_customer_accounts[0]=new Object();
contact_customer_accounts[0]["firstname"]="联系人";
contact_customer_accounts[0]["lastname"]="测试"; var Contact_Tasks=new Array();
Contact_Tasks[0]=new Object();
Contact_Tasks[0]["subject"]="Task associated to contact";
contact_customer_accounts[0]["Contact_Tasks"]=Contact_Tasks;
entity["contact_customer_accounts"]=contact_customer_accounts; var jsonEntity = window.JSON.stringify(entity); var req = new XMLHttpRequest()
req.open("post",Xrm.Page.context.getClientUrl() + "/api/data/v8.0/accounts", false);
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.onreadystatechange = function () {
if (this.readyState == 4) {
if (this.status == 204) { }
else {
var data=JSON.parse(this.responseText).error.message;
}
}
};
req.send(jsonEntity);

关于代码中的contact_customer_accounts的由来如下截图,Contact_Tasks也是同理可以在contact中找到,架构名称注意大小写

有图有真相,上截图

创建的account主实体记录,account中的"John Smith"的lookup字段关联的contact也是本次operation中新建的

account记录下关联的多条(我这只创建了一条)联系人记录

测试联系人记录下创建的多条(我这只创建了一条)task记录

上述即是一个create operation中产生的数据记录,是不是很cool。这个场景一般在后台代码中用的比较多,以前的做法都是通过组织服务先创建主记录后,拿到主记录的guid然后再一条条的创建子记录,现在一个api一次request就能搞定。

关于第二个api"Associate entities on create",这里不多做阐述了,以上面的demo来举例,就是创建一条account记录给primarycontactid这个lookup字段赋值,实际过程中用到的不多,就算要用到也都直接是包含在create的api中了。

Dynamics CRM2016 Web API之Create related entities in one operation的更多相关文章

  1. Dynamics CRM2016 Web API之Expand related entities & $ref & $count

    本篇介绍两个关于1:N关系中通过主实体取关联子实体的api,这两个api会经常被用到而且比原来的odata方式更加方便,之前如果我们要取主实体下所有的关联实体的记录都是通过Retrieve Multi ...

  2. Dynamics CRM2016 Web API之Expand related entities & $ref & $count

    本篇介绍两个关于1:N关系中通过主实体取关联子实体的api,这两个api会常常被用到并且比原来的odata方式更加方便.之前假设我们要取主实体下全部的关联实体的记录都是通过Retrieve Multi ...

  3. Dynamics CRM2016 Web Api之分页查询

    在dynamics crm web api还没出现前,我们是通过fetchxml来实现的,当然这种方式依旧可行,那既然web api来了我们就拥抱新的方式. web api中我们通过指定查询的条数来实 ...

  4. Dynamics CRM2016 Web API获取实体元数据Picklist属性的Text&Value

    通过组织服务中获取实体picklist字段的text和value可以通过RetrieveAttributeRequest实现,但在使用web api的今天该怎么实现,本文即来一探究竟,本篇基于SDK中 ...

  5. Dynamics CRM2016 Web API之删除单个查找字段值

    之前的博文中有介绍过,Web Api中的一个删除单个属性的Api但没提供查找字段的删除方法,本篇补充上,这里给出的示例代码是C#的(主要看url的拼接),看下url中最后的/$ref,这个标示表明了当 ...

  6. Dynamics CRM2016 Web API之获取查找字段的text及选项集的text

    本篇再来介绍个web api的功能,关于lookup的text这里只是略带,因为有expand,现有的web api就能实现,主要提的是选项集的text,我们通过基本的查询api查出来的字段值只带有v ...

  7. Dynamics CRM2016 Web API之Use custom FetchXML

    CRM2016中新增的web api支持fetch xml了,之前使用FetchXML的场景是在后天代码中通过组织服务的retrieve multiple方法,但实际的应用效果有多大,还需要在实际的项 ...

  8. Dynamics CRM2016 Web API之更新记录

    本篇继续探索web api,介绍如何通过web api更新记录. 下面是一段简单的更新代码,更新了几个不同类型的字段,entity的赋值和前篇创建时候的一样的. var entity = {}; en ...

  9. Dynamics CRM2016 Web API之通过实体的primary key查询记录

    CRM2016启用了webapi 而弃用了odata,作为码农的我们又开始学习新东西了. 下面是一段简单的查询代码,通过systemuser的primary key来查询一条记录 Web API查询方 ...

随机推荐

  1. python包安装和使用机制

    python语言的魅力之一就是大量的外置数据包,能够帮助使用者节省很多时间,提高效率.模块下载和引用是最常见的操作,现在解析内部的原理和背后发生的故事,做到心里有数. 导航: 基本定义 模块使用 模块 ...

  2. 机器学习基石:13 Hazard of Overfitting

    泛化能力差和过拟合: 引起过拟合的原因: 1)过度VC维(模型复杂度高)------确定性噪声: 2)随机噪声: 3)有限的样本数量N. 具体实验来看模型复杂度Qf/确定性噪声.随机噪声sigma2. ...

  3. LoadRunner菜鸟入门学习笔记

    一.LR版本及浏览器选择 1.首先百度了一下LR各版本的浏览器兼容性 8.0 最高ie6 8.1 最高ie6 9.0 最高ie7 9.5 最高ie8 11.0 最高ie9( win7 32位+LR11 ...

  4. codeforces round #419 B. Karen and Coffee

    To stay woke and attentive during classes, Karen needs some coffee! Karen, a coffee aficionado, want ...

  5. hdu 5458 Stability(树链剖分+并查集)

    Stability Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 65535/102400 K (Java/Others)Total ...

  6. IDF实验室-CTF训练营-牛刀小试CTF

    自从开始玩CTF后,发现这个游戏还是比较有意思,发现了一个练习场地IDF实验室:http://ctf.idf.cn/ 刷刷里面的题目,今天完成了其中的牛刀小试,分享一下解题思路: 1. 被改错的密码 ...

  7. WiFi安全网桥探讨

    1 WiFi网桥现状 近年来,随着视频监控产品不断普及,无线网桥,特别是WiFi网桥,也越来越受到市场青睐.主要原因大概归属如下:1)同有线视频传输相比,无线视频传输无需布线,故安装及其方便,施工周期 ...

  8. npm run dev 出错的解决办法

    bogon:~ yan$ cd my-project bogon:my-project yan$ npm run dev > my-project@1.0.0 dev /Users/yan/my ...

  9. Python IDLE背景主题

    相信刚进入python学习之路的朋友们,都还是挺喜欢python自带的IDLE,但是白的代码背景色以及其它的代码色确实让人看着有点不舒服,所以当时也琢磨着能不能自己给它换换颜色,这个当然可以,废话不多 ...

  10. Python中文件的操作

    文件的操作介绍 文件打开的方法 主要有两种: no with 格式:open(file, mode='r', buffering=-1, encoding=None, errors=None, new ...