如何使用CreateItemAsync向Azure Gremlin DB添加含列表的项
解决Cosmos DB插入列表属性被忽略的问题
你的问题核心是序列化工具不匹配:Cosmos DB .NET SDK默认使用System.Text.Json进行序列化,但你在实体类中用的是Newtonsoft.Json的[JsonProperty]属性,导致列表字段未被正确识别。以下是两种可行的解决方式:
方案一:改用System.Text.Json属性(推荐)
直接将实体类中的[JsonProperty]替换为System.Text.Json对应的[JsonPropertyName]属性,让SDK能正确识别列表字段:
using System.Text.Json.Serialization; public class MyItem { [JsonPropertyName("id")] public string Id { get; set; } [JsonPropertyName("myList")] public List<string> MyList { get; set; } }
修改后重新执行插入代码,列表会被正确序列化为Cosmos DB支持的数组类型存储。
方案二:配置SDK使用Newtonsoft.Json序列化
如果不想修改实体类的属性,可以在创建CosmosClient时指定使用Newtonsoft.Json作为序列化工具,适配你现有的[JsonProperty]属性:
using Microsoft.Azure.Cosmos.Serialization.HybridRow.NewtonsoftJson; var clientOptions = new CosmosClientOptions { Serializer = new NewtonsoftJsonSerializer() }; var cosmosClient = new CosmosClient("你的连接字符串", clientOptions);
额外注意
调用异步方法CreateItemAsync时建议加上await,确保异步操作完成:
await container.CreateItemAsync(item);
内容的提问来源于stack exchange,提问作者gulu
相关产品推荐
相关产品推荐

