无法使用外部包装器 (davidyack) 在 mvc 核心中执行 MSCRM Webapi

我无法使用 David Yack 包装器在 MSCRM 中为 mscrm webapi github执行绑定的自定义操作。我可以使用 MSCRM SDK 库轻松执行操作,但由于我使用的是 MVC 核心 2.2,所以我无法使用这些 DLL,我发现最好的替代方法是 david 的包装器,尽管在文档方面很薄,但它很棒。


我尝试了各种执行操作的方法。如果操作是没有参数的未绑定自定义操作,我就可以开始工作。我在实体绑定操作和传递参数以及关联的实体 ID 上没有运气。


我曾尝试在文档中找到 ac# 示例,但事实证明这很困难。


我试图在下面的 SDK 代码中实现相同的功能,但使用 David 的包装器。


OrganizationRequest request = new OrganizationRequest("new_GetProductBuyPrice");

request["Target"] = new EntityReference("product", new Guid(ProductID));

request["Account"] = new EntityReference("account", new Guid(AccountID));

request["Currency"] = new EntityReference("transactionalcurrency", new Guid(CurrencyID));

request["Qty"] = 1.00m;


OrganizationResponse response = Xrm.XrmSvc.Execute(request);

UnitBuy = Math.Round(((Money)response.Results["BuyPrice"]).Value, 2);

DiscountReason = response.Results.Contains("DiscountReason") ? response.Results["DiscountReason"].ToString() : string.Empty;

如何让 david 的包装器与我在 CRM 中的自定义操作一起执行?


FFIVE
浏览 109回答 1
1回答

慕森王

因此,设法使用github上的 David Yack API 包装器解决了这个问题,并发布了我的发现,以防万一有人偶然发现这篇文章。他们的关键是使用字典,就好像它是 Microsoft SDK 中的 EntityReference 类一样,并使用“@odata.type”作为实体类型,实体 ID 全部小写,如下所示:dynamic AccountRef = new Dictionary<String, object>();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AccountRef["@odata.type"] = "Microsoft.Dynamics.CRM.account";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AccountRef["accountid"] = AccountId.ToString();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dynamic CurrencyRef = new Dictionary<String, object>();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CurrencyRef["@odata.type"] = "Microsoft.Dynamics.CRM.transactioncurrency";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CurrencyRef["transactioncurrencyid"] = CurrencyId.ToString();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var actionParams = new&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Account = AccountRef,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Currency = CurrencyRef,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Qty = 1.00m&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; };&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var response = await _crmClient.API.ExecuteAction("Microsoft.Dynamics.CRM.new_GetProductBuyPrice", "products", ProductId, actionParams);
打开App,查看更多内容
随时随地看视频慕课网APP