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

Azure Cosmos DB .NET v3调用CreateItemAsync无法自动生成id如何解决

你收到的The input name 'null' is invalid报错,核心原因是提交的实体数据中显式包含了值为null的id字段,Cosmos DB服务端不允许id为null值,同时.NET v3 SDK仅会在请求完全没有携带id字段时才会自动生成id,不会主动覆盖显式传入的null id。

解决方法

方法1:调整Id属性的序列化规则

修改实体类的Id属性注解,配置序列化时忽略null值,这样当Id为null时,最终提交给服务端的JSON不会包含id字段,触发SDK自动生成逻辑:

using Newtonsoft.Json;

public class YourEntity
{
    // 配置null值序列化时忽略该字段
    [JsonProperty("id", NullValueHandling = NullValueHandling.Ignore)]
    public string Id { get; set; }

    // 其余属性保持原有写法
    public string Url { get; set; }
    public string CustomerId { get; set; }
    // ... 其他属性省略
}

方法2:调整CosmosClient全局序列化配置

如果你需要全局忽略null值序列化,可以在初始化CosmosClient时统一配置,不需要单独给每个实体的Id加注解:

using Microsoft.Azure.Cosmos;

var cosmosClient = new CosmosClient("你的连接字符串", new CosmosClientOptions
{
    SerializerOptions = new CosmosSerializationOptions
    {
        // 全局忽略null值字段的序列化
        IgnoreNullValues = true,
        // 其余原有配置保持不变
        PropertyNamingPolicy = CosmosPropertyNamingPolicy.CamelCase // 如果你之前用了驼峰命名就保留
    }
});

配置完成后,创建实体实例时不要给Id属性赋值(保持默认的null值即可),直接调用CreateItemAsync插入,SDK会自动生成GUID格式的id写入服务端,不需要手动赋值。

内容的提问来源于stack exchange,提问作者chiaDev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:12:02