You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 09:53:16