繁体   English   中英

删除 Dynamics 中的实体引用 API

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM