次の方法で共有


OData エンドポイントを使用して追加データ操作を実行する

 

公開日: 2016年11月

対象: Dynamics CRM 2015

基本的なデータ操作に加えて、Microsoft Dynamics CRM 2015 および Microsoft Dynamics CRM Online 2015 更新プログラム の REST エンドポイントを使用して、さらにいくつかの特別なデータ操作を実行できます。

このトピックの内容

複合型を Null に設定

ディープ挿入の使用

個別のプロパティの更新

レコードの関連付けと関連付け解除

複合型を Null に設定

Microsoft Dynamics CRM の複合型null に設定するには、その内部の各プリミティブ型を明示的に null に設定する必要があります。

たとえば、エンティティ参照 型を null に設定するには、IdLogicalName、および Name の各プロパティを null に設定する必要があります。OptionSetValue金額、および BooleanManagedProperty についても同様です。

ディープ挿入の使用

ディープ挿入を使用すると、複数の関連する新しいレコードを同じ操作で作成できます。

次のサンプルに、jQuery を使用して取引先企業と 2 つの関連タスクを定義する JavaScript コードを示します。 詳細については、「JQuery の使用」を参照してください。 タスクが、関連するタスクを表す Account_Tasks プロパティに割り当てられ、POST 要求を使用して /AccountSet URI に送信されると、取引先企業と 2 つの関連タスクが 1 つの操作で作成されます。

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

この URI を HTTP PUT 要求で使用し、本体で取引先企業の新しい名前を指定すると、そのプロパティだけの値が更新されます。

レコードの関連付けと関連付け解除

レコードの関連付けまたは関連付けの解除の方法には 2 つあります。それは、参照プロパティのデータを他のプロパティの種類であるかのように更新する方法と、リンク リソースの 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 要求を使用する必要があります。 次に、ParentAccountId エンティティ参照プロパティを使用して、別の取引先企業に関連付けられている特定の取引先企業レコードを URI が表すサンプルを示します。

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

この URI に対する HTTP DELETE 要求は、関連付けを削除します。

注意

何らかのエンティティ関係が必要です。 必須の関係のデータを削除しようとするとエラーが発生します。

関連項目

OData エンドポイントを使用して基本的なデータ操作を実行する
Web リソースで OData エンドポイントを使用する
Ajax および JScript Web リソースで OData エンドポイントを使用する
サンプル: OData エンドポイントと JavaScript を使用したレコードの関連付けおよび関連付け解除

© 2017 Microsoft. All rights reserved. 著作権