Сопоставить свойство логического имени CRM с объектом DataAnnotations - PullRequest
0 голосов
/ 19 февраля 2020

Я использую Simple.OData.Client для отправки запроса с URL:

<host>/api/data/v9.1/policies(<id>)?$select=customer_value

Это возвращает следующее (в Почтальоне, потому что я разочарованно не могу видеть возвращаемый json контент из Simple. OData.Client, но запрос имеет те же заголовки и URL).

{
    "@odata.context": "<host>/api/data/v9.1/$metadata#policies(_customer_value)/$entity",
    "@odata.etag": "W/\"468251131\"",
    "_customer_value@Microsoft.Dynamics.CRM.lookuplogicalname": "contact",
    "_customer_value": "00c3c040-efbb-e811-a8eb-0003ff414d8e",
    "policyid": "038a45a0-5dd8-e811-a8eb-0003ff271c22"
}

Я пытаюсь проанализировать ответ в сущности следующим образом:

using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace entities
{
    [Table("policies")]
    public class CustomPolicyEntity
    {
        [Required]
        [Column("_customer_value")] // works
        public Guid Customer { get; set; }

        [Required]
        [Column("_customer_value@Microsoft.Dynamics.CRM.lookuplogicalname")] // does not work
        public string CustomerLogicalName { get; set; }
    }
}

Но CustomerLogicalName равно нулю вместо «контакт». Может кто-нибудь сказать мне, что происходит не так?

Буду признателен за помощь в отладке, как получить аналогичный ответ для почтальона с Simple.OData.Client. Когда я звоню

await response.Content.ReadAsStringAsync();

, я получаю массивный объект XML вместо json, как я ожидал. Очевидно, что DataAnnotations могут это понять, поскольку они могут его анализировать, но поскольку я получаю разные результаты с Simple.OData.Client и Postman, используя одни и те же параметры запроса, мне трудно понять, какая часть работает неправильно. "_customer_value@Microsoft.Dynamics.CRM.lookuplogicalname": "контакт" может даже не прийти к клиенту, насколько я знаю.

...