2017-07-12 18 views
1

質問と呼ばれるエンティティがあり、複数の応答を持っています。つまり、質問と回答のエンティティ間に1:Nの関係があります。Dynamics 365 Web API - 複数の子レコードを作成するJSON?

既存の質問レコードがあります。達成するために必要なことは、質問レコードを更新すると同時に、同じ質問に関連する複数のレスポンスレコードを追加することです(レスポンステーブルのnew_QuestionIdフィールドはレスポンス作成の一部として設定する必要があります)。

私のロジックが質問レコード(すなわち、1つのパッチ操作)を更新

  1. にしました。
  2. ループ内にループ構造があり、質問レコードに関連する応答レコードを作成します。

サンプルコード

だから、ここで私たちは(レコードID 4B5461DB-7061-E711-8124-E0071B66C0A1との)質問に関連している1つの応答レコードを作成しているサンプルを与えています。

POST [Organization URI]/api/data/v8.2/new_responses HTTP/1.1 
Content-Type: application/json; charset=utf-8 
OData-MaxVersion: 4.0 
OData-Version: 4.0 
Accept: application/json 
{ 
    "new_questionTitle": "This is the question from my console app", 
    "new_score": 100, 
    "new_nativelanguage": "This is in native language", 
    "new_englishtranslation": "This is in english", 
    "[email protected]": "/new_questions(4B5461DB-7061-E711-8124-E0071B66C0A1)", 
    "new_name": "This is the primary attribute" 
} 

私の質問は、私はすべての私たちは、ダイナミクス365オンライン上にある4B5461DB-7061-E711-8124-E0071B66C0A1

の同じ質問IDに関連し、複数の応答を作成することができるようにしたい場合はJSONどうなるかです。

答えて

0

ここに記載されているようWebAPIのは、バッチリクエストを実行する能力を持っている:スケーラブルなソリューションによってExecute batch operations using the Web API

そしてthis blog postは、バッチの次のサンプルコードが含まれていますが作成:

function BulkCreate() { 
    var body = ""; 
    var entityCollection = new Array(); 

    var entity1 = {}; 
    entity1["name"] = "dummy account 1"; 
    var body = JSON.stringify(entity1); 
    entityCollection.push(body); 

    body = ""; 
    var entity2 = {}; 
    entity2["name"] = "dummy account 2"; 
    body = JSON.stringify(entity2); 
    entityCollection.push(body); 

    var data = []; 
    data.push('--batch_123456'); 
    data.push('Content-Type: multipart/mixed;boundary=changeset_BBB456'); 
    data.push(''); 

    for (var i = 0; i < entityCollection.length; i++) { 
     data.push('--changeset_BBB456'); 
     data.push('Content-Type:application/http'); 
     data.push('Content-Transfer-Encoding:binary'); 
     var id = i + 1; 
     data.push('Content-ID:' + id); 
     data.push(''); 
     data.push('POST ' + parent.Xrm.Page.context.getClientUrl() + '/api/data/v8.1/accounts HTTP/1.1'); 

     data.push('Content-Type:application/json;type=entry'); 
     data.push(''); 
     data.push(entityCollection[i]); 
    } 

    data.push('--changeset_BBB456--'); 
    data.push('--batch_123456--'); 
    var payload = data.join('\r\n'); 
    $.ajax(
    { 
     method: 'POST', 
     url: parent.Xrm.Page.context.getClientUrl() + '/api/data/v8.1/$batch', 
     headers: { 
      'Content-Type': 'multipart/mixed;boundary=batch_123456', 
      'Accept': 'application/json', 
      'Odata-MaxVersion': '4.0', 
      'Odata-Version': '4.0' 
     }, 
     data: payload, 
     async: false, 
     success: function (data, textStatus, xhr) { 
      alert("Record has been successfully Created"); 
     }, 
     error: function (xhr, textStatus, errorThrown) { 
      alert(textStatus + " " + errorThrown); 
     } 
    }); 
} 
+0

感謝を!しかし、バッチ操作では、バッチ要求が提供する値は、変更セットを含めることができ、グループとして成功するか失敗するかを多数の操作に束ねることができるということです。 – Kanini

関連する問題