【发布时间】:2020-03-31 14:37:55
【问题描述】:
我使用 Azure Function 应用程序。在应用程序中,我使用包 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 中提到的完全一样,但是当我通过CreateDocumentAsync 方法将我的实体写入CosmosDB 时,我看到了CreateDate 现在是帕斯卡大小写,看起来像 CreateDate。想提一下,没有使用ContractResolver。我找不到任何其他可以将帕斯卡案例应用于实体序列化的地方。
[更新]
当我运行测试时,我发现 DB 中的属性命名是正确的(考虑到 JsonProperty)。仅当 azure func 写入 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]
有人能建议哪些其他选项会导致这种行为吗?
【问题讨论】:
-
为什么在 CosmosDB 中需要将文档字段设为驼峰式?
-
@Oliver 实际上我不在这里做决定,我对现有项目进行重构,只需要找出这种行为的原因。
-
是否按照here 的描述配置了自定义序列化程序?
-
@Oliver 提到 doc 使用了一些不同的客户端,在我的例子中是 DocumentClient,但是在选项中没有指定特殊的序列化程序,此外,当我运行测试时,我发现 DB 中的属性命名是正确的。只有当 azure func 写入 DB 时才会出错
-
@Oliver 使用 DocumentClient 创建代码更新了任务。
标签: c# azure-cosmosdb .net-4.7.2