我正试图通过将值设置为null来解除对单值导航属性的引用(联系人引用(的关联。
当我直接调用web api时,这是有效的:
PATCH https://mydynamics.crm.dynamics.com/api/data/v9.2/contacts(00000000-0000-0000-0000-000000000000)
{ "firstname": "John",
"lastname":"Doe",
"lookup1@odata.bind": null,
"lookup2@odata.bind": null,
"lookup3@odata.bind": null
}
//[...other data omitted for brevity...]
因此,这些查找字段,查找1,2和3将重置为null(关联被删除(。
我们运行一个同步程序,该程序在批处理中调用这些操作,当它运行时——使用相同的有效负载——查找字段无法重置(尽管如果我修改了firstname或lastname——这些字段会更新(。在这种情况下,这是一个POST批处理调用,只包含一个PATCH操作,但通常包含多个操作。我能找到的所有文档都指出,具有多个操作的PATCH应该是POST调用,但它并没有重置我的查找。
如果我将POST批次更改为PATCH批次。。。然后它按预期工作,所有字段都被正确更新,包括查找!
为什么BATCH POST和PATCH之间有区别?!
- API中是否存在bug
- 是因为我只做了一次手术吗在批次中?它适用于多个请求吗?(我没有尝试(
- 使用PATCH而不是POST对单次操作还是多次操作?假设DELETE操作也在批次中?微软表示;使用POST请求提交包含多个请求的批处理操作。批处理请求可以包括GET请求和更改集">
- 为什么缺少关于这个主题的文档
感谢您的帮助!
在搜索相关CRM WEB API挑战时阅读您的问题。回复可能有点过期了,但我认为以下是适用于您的情况:
POST、GET、PUT、PATCH和DELETE是HTTP请求类型如何POST一个批次在这里描述得很好:https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/execute-batch-operations-using-web-api