Dynamics CRM 365 - обновляйте поля, используя любое уникальное поле, кроме поля GUID

Я хочу обновить поле Contact объекта firstname, используя PATCH / PUT, используя HttpClient.

Я пробовал это, используя PATCH с GUID контакта. Но если я попробую то же самое с указанным ниже URL:

baseURL / контакты (myorg_contactnumber = '113')

baseURL / контакты ('113')

baseURL / контакты (myorg_contactnumber = "113")

но выдает ошибку Bad Request.


person Pratik Soni    schedule 15.12.2017    source источник
comment
Чтобы иметь возможность, вам необходимо настроить альтернативный ключ для объекта контакта и использовать это имя ключа для ссылки на запись контакта.   -  person Jatin Sanghvi    schedule 17.12.2017
comment
Пожалуйста, укажите код для этого запроса.   -  person Ondrej Svejdar    schedule 14.01.2018


Ответы (1)


Не видя вашего кода, как сказал Джатин - вероятно, только промах может быть Настройка альтернативного ключа.

Приятная вещь с таким запросом PATCH заключается в том, что по умолчанию он обновляет запись, если она существует, или создает запись, если она не существует.

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

Вы также отметили C #, поэтому попробуйте что-нибудь вроде вот это:

   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);
   }
person Arun Vinoth    schedule 12.01.2018