如何通过OData及Microsoft OData Client(.NET)清空D365多选选择列表
解决Dataverse多选选项列表字段清空问题
OData API 原生调用方案
要清空多选选项列表字段,直接在PATCH请求中将字段值设为null即可,不要使用空字符串或空格。请求体示例:
{ "new_yourmultiselectfield@odata.type": "#Microsoft.Dynamics.CRM.String", "new_yourmultiselectfield": null }
Dataverse会将null识别为清除所有选中选项的指令,避免解析空字符串时触发的格式错误。
Microsoft OData Client(.NET) 实现方案
直接更新实体对象
找到目标实体实例后,将对应多选字段属性设为null,再执行保存操作:
// 替换为你的实体类名、字段名和目标ID var targetEntity = context.YourEntitySet.Where(e => e.Id == Guid.Parse("目标实体ID")).FirstOrDefault(); if (targetEntity != null) { targetEntity.New_YourMultiselectField = null; context.UpdateObject(targetEntity); context.SaveChanges(); }
使用Delta对象进行部分更新
如果只需更新单个字段,用Delta对象更高效:
var delta = new Delta<YourEntity>(); delta.SetPropertyValue(nameof(YourEntity.New_YourMultiselectField), null); context.UpdateObject(delta); context.SaveChanges();
关键说明
不要传递空字符串或空格作为字段值,Dataverse会尝试将这类内容解析为选项值集合,进而触发"The optionset values sent are not valid integers."错误。传递null是符合OData规范的清除属性值方式,能正确触发清空操作。
内容的提问来源于stack exchange,提问作者kor_
相关产品推荐
相关产品推荐

