Dynamics CRM2016 Web API之Create related entities in one operation

本篇继续来介绍两个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中了。

时间: 2024-10-29 00:31:15

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

Dynamics CRM2016 Web API之Use custom FetchXML

CRM2016中新增的web api支持fetch xml了,之前使用FetchXML的场景是在后天代码中通过组织服务的retrieve multiple方法,但实际的应用效果有多大,还需要在实际的项目中去体会了. 上代码,注意要对fetch xml进行编码 var fetch="<fetch mapping='logical'>" +"<entity name='account'>" +"<attribute name='a

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

本篇再来介绍个web api的功能,关于lookup的text这里只是略带,因为有expand,现有的web api就能实现,主要提的是选项集的text,我们通过基本的查询api查出来的字段值只带有value,如果想要获取text也很简单,只需要在request的头部加一条信息即可,下面分别给出了C#及JS的示例代码. HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(weburi); req.Credentials = new

Dynamics CRM2016 Web API之删除

相比之前的增改查,删除就显得简单的多了. 这里的request的type为delete,删除成功的status为204,404则是要删除的记录不存在 var id = 'BAD90A95-7FEA-E511-9414-ADA183AB6249'; $.ajax({ async: false, type: "DELETE ", contentType: "application/json; charset=utf-8", url: Xrm.Page.context.g

Dynamics CRM2016 Web API之更新记录

本篇继续探索web api,介绍如何通过web api更新记录. 下面是一段简单的更新代码,更新了几个不同类型的字段,entity的赋值和前篇创建时候的一样的. var entity = {}; entity["name"] = '测试更新';//文本 entity["new_gender"] = 100000001;//选项集 entity["new_birth"] = new Date();//日期 entity["[email p

Dynamics CRM2016 Web Api之更新时间字段值

前篇我们论述了时间字段的查询,本篇来论述下时间字段的更新. 还是以之前建的当地时间(时间行为为用户当地时间)字段来测试 可以看到web api更新的是数据库的时间,而在前台的反映就是做了加8处理,所以后期在时间字段的处理上要多加注意,分清楚该之间字段的行为到底是什么.

Dynamics CRM2016 Web API之Retrieve Multiple

之前的博文仅仅介绍了通过记录的primary key来查询单条记录或者单个属性值,本篇介绍多条记录的查询方法 var filter = "? $filter=name eq '123'"; var req = new XMLHttpRequest() req.open("get", Xrm.Page.context.getClientUrl() + "/api/data/v8.0/accounts/" + filter, false); req.

Dynamics CRM 2015/2016/365 Web API:用户模拟

今天再更新一篇关于在Web API接口中使用用户模拟这一功能,用户模拟在Dynamics CRM开发中已经不是新概念了,历任接口都支持这个功能.在介绍怎么在Web API中使用该功能之前,我们先来过一遍用户模拟的具体功能. 用户模拟,顾名思义,即为模拟其他用户.在调用接口的时候如果我们都需要提供一个账号密码信息,但是很多时候,我们的接口的认证信息是一个集成账号,但是我们却希望通过这个接口创建的记录的创建者是其它用户.如果你有这个需求,你就需要用到用户模拟功能. 在Dynamics CRM Web

Dynamics CRM 2015/2016 Web API:Unbound Function 和 Bound Function

今天我们来看看Dynamics CRM Web API Function 吧, 这是一个新概念,刚接触的时候我也是比较的迷糊,这样的命名确实是和之前的那套基于SOAP协议的API完全联系不上.好了,不说闲话了.这里的Function呢,就我来看,更像是一些被封装好的原生函数和老API中的Request差不多的意思,只是API的架构方式变了,所以名称也就跟着变了. 我们之前要查看当前登录用户的信息,需要调用WhoAmIRequest,那现在呢?我们需要调用WhoAmI Function. 这里的F

Dynamics CRM 2015 Web API:简介

最近Dynamics CRM又有新动作啦,同学们可知道否,在未来的版本中,我们现在使用的基于SOAP的API们将被淘汰,取代它们的是现在流行的Web API.对于这两类API,各有优势,但是对于微软选择后者,更多的原因还是想在移动端有所建树,毕竟基于SOAP的API对于移动端来说显得过于笨重. 这消息对我们来说有好也是有坏的,坏处就是,哈哈,大家又要开始学习一套新的API编程知识:至于好处嘛,那就是Web API更灵活,我们仅仅需要写几行代码就能实现API调用.例如:如果我们用SOAP API在