C# Azure文档客户端忽略JsonProperty属性
我使用Azure函数应用程序。在应用程序中,我使用包Microsoft.Azure.DocumentDB v2.9.2与CommosDB一起工作。我的实体是:C# Azure文档客户端忽略JsonProperty属性,c#,azure-cosmosdb,.net-4.7.2,C#,Azure Cosmosdb,.net 4.7.2,我使用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 Da
public abstract class Entity
{
[JsonProperty("id")]
public string id { get; set; }
}
public class MyLog : Entity
{
[JsonProperty("createDate")]
public DateTime CreateDate { get; set; }
}
当我用Newtonsoft.Json
序列化MyLog
时,我看到CreateDate
属性是驼峰式的,看起来与JsonProperty
中提到的完全一样,但是当我通过createdocumentsync
方法将实体写入CosmosDB时,我看到CreateDate
现在是pascal情况,看起来像CreateDate
。要提到的是,没有使用ContractResolver
。我找不到任何其他地方可以将pascal case应用于实体序列化
[更新]
当我运行测试时,我看到DB中的属性命名是正确的(考虑到JsonProperty)。只有azure func写入DB时才是错误的
var policy = new ConnectionPolicy();
policy.PreferredLocations.Add("Germany North");
documentClient = new DocumentClient(endPoint, key, policy);
await documentClient.OpenAsync();
[/UPDATE]
有人能告诉我还有什么其他选择可以导致这种行为吗?所以,我找到了这种行为的原因。带有.NET 4.7.2的Azure函数v1默认使用DataContractJsonSerializer,并且不考虑JsonProperty属性。测试使用NewtonSoft json序列化程序,这就是使用属性的原因。为什么在CosmosDB中需要文档字段是驼峰大小写?@Oliver实际上我在这里不做决定,我对现有项目进行重构,只需要找出这种行为的原因。是否已按所述配置自定义序列化程序?@Oliver提到doc使用了一个稍有不同的客户端,在我的情况下是DocumentClient,但在选项中没有指定特殊的序列化程序,此外,当我运行测试时,我发现DB中的属性命名是正确的。只有当azure func写入时才是错误的DB@Oliver用DocumentClient创建代码更新了任务。我刚刚回来再看看这个。很高兴你把它整理好了。你的回答中有没有可以参考的文件?
await documentClient.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri(databaseName, collectionName), document);