Dynamics CRM 365 - 使用除GUID字段之外的任何唯一字段更新字段

时间:2017-12-15 05:51:00

标签: c# httprequest dynamics-crm dotnet-httpclient dynamics-crm-webapi

我想使用Contact使用firstname / PATCH来更新PUT实体的HttpClient字段。

我使用PATCH和联系人的GUID尝试了此操作。但如果我尝试使用以下网址:

  

基本URL /触点(myorg_contactnumber = '113')

     

基本URL /联系人( '113')

     

基本URL /触点(myorg_contactnumber = “113”)

但是它会抛出Bad Request错误。

1 个答案:

答案 0 :(得分:0)

没有看到你的代码,就像贾丁所说的那样 - 可能唯一的错过可能是Alternate key setup

  

像这样的PATCH请求的好处是,默认情况下它将更新记录(如果存在),或者它将创建记录如果它没有'存在。

url: /api/data/v8.2/contacts(new_alternatekey='12345')
method: PATCH
body: {
    "name": "Alternate key contact updated"
}

您也标记了C#,因此请尝试使用this

   JObject contact1Add = new JObject();
   contact1Add.Add("firstname", "Jack");

   HttpRequestMessage updateRequest1 = new HttpRequestMessage(
       new HttpMethod("PATCH"), contact1Uri);
   updateRequest1.Content = new StringContent(contact1Add.ToString(),
       Encoding.UTF8, "application/json");
   HttpResponseMessage updateResponse1 =
       await httpClient.SendAsync(updateRequest1);
   if (updateResponse1.StatusCode == HttpStatusCode.NoContent) //204
   {
    Console.WriteLine("Contact '{0} {1}' updated with " +
        "firstname", contact1.GetValue("firstname"),
        contact1.GetValue("lastname"));
   }
   else
   {
    Console.WriteLine("Failed to update contact for reason: {0}",
        updateResponse1.ReasonPhrase);
    throw new CrmHttpResponseException(updateResponse1.Content);
   }