【问题标题】:How to update a related CRM entity reference with ODataLib?如何使用 ODataLib 更新相关的 CRM 实体引用?
【发布时间】:2018-07-13 12:00:50
【问题描述】:

我正在使用 ODataLib (http://odata.github.io) 和客户端生成的库来访问 Microsoft CRM 的 OData API (v9.0)。

我正在尝试更新实体导航属性值(GUID),但更新似乎没有做任何事情(没有调用)。

如果我尝试直接更新导航属性的值,我会收到一条错误消息,提示“CRM 不支持直接更新实体引用属性,请改用导航属性”。

实体基本上是N:N关系中的中间实体。

基本上我在代码中所做的是(半伪代码):

Account a = _dao.GetAccount();

// This gets the dataservicecollection that tracks the changes
DataServiceCollection<MyRelationEntity> rel = _dao.GetMyRelationEntity();

rel.AccountId = a;

_dao.SaveChanges(SaveChangesOptions.PostOnlySetProperties);

我应该使用 AddLink、UpdateLink 还是类似的东西?他们似乎也没有做任何事情。

如果术语不正确,我深表歉意;我是 CRM 的新手。

【问题讨论】:

    标签: c# dynamics-crm odatalib


    【解决方案1】:

    我对 ODataLib 一无所知,但从 Dynamics 365 的角度来看,您正在寻找的操作是 Associate。

    这是一个 D365 Web API 调用的伪代码示例,用于将商机与帐户相关联。请注意,URI 包含 accountId 和关系名称,而正文包含机会的 URI。

    POST [Organization URI]/api/data/v9.0/accounts(00000000-0000-0000-0000-000000000002)/opportunity_customer_accounts/$ref HTTP/1.1   
    Content-Type: application/json   
    Accept: application/json   
    OData-MaxVersion: 4.0   
    OData-Version: 4.0  
    
    {  
    "@odata.id":"[Organization URI]/api/data/v9.0/opportunities(00000000-0000-0000-0000-000000000001)"  
    }  
    

    This article 有更多信息。

    而且,在使用 D365 Web API 时,我发现 Jason Lattimer's RESTBuilder 是一个不可或缺的工具。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多