.NET SDK调用Cosmos DB Patch新增属性时无法赋值null的问题咨询
Cosmos DB .NET SDK PatchOperation.Add 传null报错的解决方法
原因
你遇到的报错是.NET SDK泛型方法的设计限制,不是Cosmos DB部分更新功能不支持写入null值:
你当前调用的是PatchOperation.Add<string>(string path, string value)泛型重载,SDK内部对该重载的value参数做了非空校验,传入null会直接触发参数校验异常。
解决方案
有两种可用的写法可以实现写入null值的需求,不需要额外修改其他配置:
- 使用非泛型的
Add重载,不需要指定泛型参数,SDK会自动将传入的null序列化为JSON null存入文档:
var patchOperations = new List<PatchOperation>(){ PatchOperation.Add("/FavoriteColor", null) }; await container.PatchItemAsync<T>( id: myId, partitionKey: new PartitionKey(myPk), patchOperations: patchOperations);
- 如果需要使用泛型重载,可将泛型参数指定为可空字符串类型
string?(要求项目已开启可空引用类型支持):
var patchOperations = new List<PatchOperation>(){ PatchOperation.Add<string?>("/FavoriteColor", null) };
内容的提问来源于stack exchange,提问作者Cowborg
相关产品推荐
相关产品推荐

