[英]Removing an entity reference in Dynamics API
我是 Microsoft Dynamics web API 的新手,我需要在批量更新调用中删除/清空一个实体引用(一个包含 GUID 的字段,它是另一个实体中记录的 ID)。 此批更新调用可以包含任意数量的记录,并且每条记录可以包含任意数量的需要清空的实体引用字段。 要设置实体引用,我可以执行以下操作:
"gnh_address1_countryid@odata.bind":"/gnh_countries(c58790c2-ed83-e511-80f7-1458d043a570)"
但是,要删除它,将值设置为 null(或 0 的空 GUID 字符串)似乎不起作用。 我遇到过这个页面
https://msdn.microsoft.com/en-us/library/mt607875.aspx#bkmk_Removearereferencetoanentity
这告诉我需要对要删除的给定字段执行删除调用。 这真的是唯一的方法吗? 在我看来,这应该是一件相当简单的事情。 据我了解,如果我有 3 条要更新的记录,每条记录都有 3 个我想要删除/删除/取消的实体引用字段,那将是 1 次批量更新调用,然后是 9 次后续删除调用. 如果我有 1000 条记录要更新,这将是一个更新,然后是 3000 个删除调用。 再一次,这真的是唯一的方法吗? 有没有办法将它们作为批量更新的一部分删除?
不幸的是,这是唯一可用的方式 ,即使在今天。
微软在多个v8.x版本之后发布了v9 web api版本,但仍然删除引用属性/单值导航属性是可行的方法。 在更新时无法将null
设置为Lookup字段(外键)。
使用Web API操作将set-null与其他字段更新组合在一起
分配值 Guid。 空,并创建一个插件,监听验证更新,然后在为我工作的插件中将值设置为 null。 这是一种比构建动作更简单的方法。 我需要这种方法,因为我正在从 web-api 代码更新同一个补丁中的几个字段。
如果您使用 Kipon.Solid.Plugin 框架来构建插件,插件方法将如下所示简单:
public void OnValidateUpdate(Entities.kp_responsibilitymatrix target)
{
if (target.kp_Solution != null && target.kp_Solution.Id == Guid.Empty)
{
target.kp_Solution = null;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.