Azure Клиент документов игнорирует атрибут JsonProperty - PullRequest
1 голос
/ 31 марта 2020

Я использую Azure Функция приложения. В приложении я использую пакет Microsoft. Azure .DocumentDB v2.9.2 для работы с CommosDB. Моя сущность:

public abstract class Entity
{
    [JsonProperty("id")]
    public string id { get; set; }
}

public class MyLog : Entity
{
    [JsonProperty("createDate")]
    public DateTime CreateDate { get; set; }
}

Когда я сериализую MyLog с Newtonsoft.Json, я вижу, что свойство CreateDate имеет стиль верблюжьего случая и выглядит точно так же, как упомянуто в JsonProperty, но когда я пишу свою сущность к CosmosDB методом CreateDocumentAsync я вижу, что CreateDate теперь pascal case и выглядит как CreateDate. Хочу отметить, что ContractResolver не используется. Я не могу найти другое место, где pascal case может быть применен к сериализации объекта.

[ОБНОВЛЕНИЕ]

Когда я запускаю тесты, я вижу, что именование свойств в БД является правильным (с учетом JsonProperty). Это неправильно, только когда azure fun c пишет в DB

var policy = new ConnectionPolicy();
policy.PreferredLocations.Add("Germany North");
documentClient = new DocumentClient(endPoint, key, policy);
await documentClient.OpenAsync();

...

await documentClient.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri(databaseName, collectionName), document);

[/ UPDATE]

Может кто-нибудь предложить, какие другие варианты могут привести к такому поведению?

1 Ответ

1 голос
/ 01 апреля 2020

Итак, я выяснил причину такого поведения. Azure Функция v1 с. NET 4.7.2 использует по умолчанию атрибуты DataContractJsonSerializer и JsonProperty не учитываются. В тестах используется сериализатор NewtonSoft json, поэтому используются атрибуты.

...