Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Azure文档客户端忽略JsonProperty属性_C#_Azure Cosmosdb_.net 4.7.2 - Fatal编程技术网

C# Azure文档客户端忽略JsonProperty属性

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

我使用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; }
}
当我用
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);