【发布时间】:2015-12-22 01:18:14
【问题描述】:
这个问题与我通过 API 调用的 Microsoft Dynamics CRM 2015 有关。
我创建联系人实体:
POST [organization URI]/api/data/contacts
Content-Type: application/json; charset=utf-8
Accept: application/json
{
"emailaddress1": "myemail@example.com",
}
登录面板后,我看到了新记录。 我可以通过 API 调用它:
[organization URI]/api/data/contacts(f76e4e7c-ea61-e511-80fd-3863bb342b00)
{
"@odata.context":"[organization URI]/api/data/$metadata#contacts/$entity",
"@odata.etag":"W/\"460199\"",
...
"contactid":"f76e4e7c-ea61-e511-80fd-3863bb342b00",
"emailaddress1":"myemail@example.com",
....
}
接下来我要做的是添加与该联系人关联的注释记录。 关注guide我打电话:
POST [organization URI]/api/data/annotations
Content-Type: application/json; charset=utf-8
Accept: application/json
{
"notetext": "TEST",
'contact@odata.bind': 'contacts(f76e4e7c-ea61-e511-80fd-3863bb342b00)'
}
但它返回 400 错误:
未声明的属性“联系人”仅在有效负载中具有属性注释,但在有效负载中未找到属性值。在 OData 中,只有声明的导航属性和声明的命名流可以表示为没有值的属性。
当我打电话时:
POST [organization URI]/api/data/annotations
Content-Type: application/json; charset=utf-8
Accept: application/json
{
"notetext": "TEST",
}
新实体已创建,但与联系人没有关系。
如何正确地编写这个 POST 请求?我在这里想念什么?
我怀疑contact@odata.bind 应该以某种不同的方式呈现,我试过contactid@odata.bind、object@odata.bind、objectid@odata.bind - 但没有效果。
有什么想法吗?
【问题讨论】:
-
您为什么使用 Web API 预览而不是 REST 端点?
-
代码应为
"objectid@data.bind": "/contacts(f76e4e7c-ea61-e511-80fd-3863bb342b00)",注意联系人前的/和引号(以防万一) -
@GuidoPreite 我试过了,错误信息是:
A property 'objectid' which only has property annotations in the payload but no property value is declared to be of type 'Edm.Guid'. In OData, only navigation properties and named streams can be represented as properties without values.
标签: odata dynamics-crm microsoft-dynamics dynamics-crm-webapi microsoft-dynamics-webapi