使用 OData 终结点执行额外的数据操作

 

发布日期: 2016年11月

适用于: Dynamics CRM 2015

除了基本数据操作之外,您还可以使用 Microsoft Dynamics CRM 2015 和 Microsoft Dynamics CRM Online 2015 更新 的 REST 端点执行一些更加专业化的数据操作。

本主题内容

将复杂的类型设置为 null

使用深层插入

更新个体属性

关联记录和解除关联记录

将复杂的类型设置为 null

若要将 Microsoft Dynamics CRM 复杂类型 设置为 null 值,您必须明确地将其中的每个基元类型都设置为 null 值。

例如,若要将 EntityReference 类型设置为 null 值,您必须将 IdLogicalNameName 属性都设置为 null 值。 这一点同样适用于 OptionSetValue金钱BooleanManagedProperty

使用深层插入

深层插入是一项使您能够在同一操作中创建多个新相关记录的技术。

以下示例显示了可使用 jQuery 定义客户及连个相关任务的 JavaScript 代码。 有关详细信息,请参阅使用 jQuery。 当将这些任务分派给表示相关任务的 Account_Tasks 属性并使用 POST 请求提交到 /AccountSet URI 时,通过一项操作即会创建该客户和这两个相关任务:

var account = new Object();
account.Name = "Sample Account";

var task1 = new Object();
task1.Subject = "Sample Task 1";

var task2 = new Object();
task2.Subject = "Sample Task 2";

var tasks = new Array();
tasks.push(task1);
tasks.push(task2);

account.Account_Tasks = tasks;

var jsonAccount = window.JSON.stringify(account);

$.ajax({ type: "POST",
    contentType: "application/json; charset=utf-8",
    datatype: "json",
    url: ODataPath + "/AccountSet",
    data: jsonAccount,
    beforeSend: function (XMLHttpRequest) {
        //Specifying this header ensures that the results will be returned as JSON.
        XMLHttpRequest.setRequestHeader("Accept", "application/json");
    },
    success: function (data, textStatus, XmlHttpRequest) {},
    error: function (XMLHttpRequest, textStatus, errorThrown) {}
});

深层插入从实体关系的任何一方都会起作用。 以上示例在新客户记录的上下文中创建了新的任务。 您可以撤消此操作以通过将 POST 请求提交到 /TaskSet URI 在创建新相关任务的上下文中创建新的客户记录。

更新个体属性

您可以通过使用符合特定属性的 URI 的 HTTP PUT 请求并传递请求正文中的新值,更新记录的个别属性值。

/AccountSet(guid'c2d26b79-7496-df11-a7c2-00155dba380d')/Name

在 HTTP PUT 请求中使用此 URI 以及对正文中的客户使用新名称,将只会更新该属性的值。

关联记录和解除关联记录

有两种方式可关联记录或解除关联记录:通过像对其他任何类型的属性一样对实体引用属性中的数据进行更新,或者通过链接资源的 URL。

当针对 N:1 实体关系的多方关联记录或解除记录的关联时,请使用 $links URI。 对于 N:N 和 1:N 实体关系,请使用没有 $links 的 URI。

以下示例显示了 URI 将针对与在 URI 中指定的客户记录相关联的任何商机记录返回一个 URI:

/AccountSet(guid'c2d26b79-7496-df11-a7c2-00155dba380d')/$links/opportunity_customer_accounts

如果要将现有的商机记录与此客户相关联,您必须在正文中包括该商机 URI 的 HTTP POST 请求中使用此 URI。

备注

当针对 N:1 实体关系的多方关联记录时,如果引用仅支持一个值,则将会覆盖任何现有的值。

同样,若要解除关联商机,您必须使用包括对特定链接资源的引用的 HTTP DELETE 请求。 以下示例显示了 URI 代表特定客户记录,该记录与另一客户使用 ParentAccountId 实体引用属性而关联:

/AccountSet(guid'c2d26b79-7496-df11-a7c2-00155dba380d')/$links/Referencedaccount_parent_account(guid'b0e5a4a6-8996-df11-a7c2-00155dba380d')

针对此 URI 的 HTTP DELETE 请求将会删除该关联。

备注

某些实体关系是必需的。 如果您尝试删除某个必要关系的数据,则会出现错误。

另请参阅

使用 OData 终结点执行基本数据操作
将 OData 终结点用于 Web 资源
与 Ajax 和 JScript Web 资源一起使用 OData 终结点
示例:使用具有JavaScript的OData关联记录和解除关联记录。

© 2017 Microsoft。 保留所有权利。 版权