Dynamics crm Dynamics365 web api更新与升级
我很困惑。我理解这两者之间的实际区别,但我看不到这里的实际实现有任何区别 以下是这些文件的摘录 更新操作使用HTTPDynamics crm Dynamics365 web api更新与升级,dynamics-crm,microsoft-dynamics-webapi,Dynamics Crm,Microsoft Dynamics Webapi,我很困惑。我理解这两者之间的实际区别,但我看不到这里的实际实现有任何区别 以下是这些文件的摘录 更新操作使用HTTPPATCH动词。传递一个JSON对象 包含要更新到所指定URI的属性 表示实体。将显示状态为204的响应 如果更新成功,则返回 此示例使用accountid更新现有帐户记录 00000000-0000-0000-0000-000000000001的值 PATCH [Organization URI]/api/data/v9.0/accounts(00000000-0000-0000
PATCH
动词。传递一个JSON对象
包含要更新到所指定URI的属性
表示实体。将显示状态为204的响应
如果更新成功,则返回
此示例使用accountid更新现有帐户记录
00000000-0000-0000-0000-000000000001的值
PATCH [Organization URI]/api/data/v9.0/accounts(00000000-0000-0000-0000-000000000001) HTTP/1.1
Content-Type: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
{
"name": "Updated Sample Account ",
"creditonhold": true,
"address1_latitude": 47.639583,
"description": "This is the updated description of the sample account",
"revenue": 6000000,
"accountcategorycode": 2
}
upsert操作与更新完全相同。它使用补丁
请求并使用URI引用特定实体。区别
如果实体不存在,它将被创建。如果已经
已存在,将对其进行更新。通常在创建新实体时
将允许系统分配唯一标识符。这是最好的
练习。但如果需要创建具有特定id值的记录,
upsert操作提供了一种执行此操作的方法。这在某些情况下可能很有价值
在不同系统中同步数据的情况
有时,在某些情况下,您需要执行向上插入,
但您希望防止一种潜在的默认操作:或
创建或更新。您可以通过添加
如果匹配
或如果不匹配
标题。有关详细信息,请参阅
因此,实际上,如上所述的基本更新
将是一个升级
,为了实现真正的基本更新(如果给定帐户存在,则更新,否则404),我需要将如果匹配:
头添加到补丁
请求中
我理解对了吗?我在这里的理解和你的一样。在实践中,我发现如果记录不存在,使用不带
If Match::
的补丁请求将执行插入操作。然而,令人费解的是,当upsert成功插入记录时,它返回一个404
错误。当我包含If Match:
时,当更新失败时,我收到一个400
错误