【问题标题】:Generating strong-types for WebAPI OData objects in C#在 C# 中为 WebAPI OData 对象生成强类型
【发布时间】:2017-12-12 04:07:11
【问题描述】:

我正在尝试使用 C# 访问 CRM 的 WebAPI,我想知道是否有一种方法可以为 WebAPI 响应生成强类型,类似于 CrmSvcUtil 用于基于组织服务生成强类型的方式

我尝试使用 OData v4 客户端代码生成器(可从 Marketplace 获得)生成代码,这适用于简单结构(整数、字符串、小数),但它似乎有一个更复杂类型的问题(例如查找)

例如,拨打 /api/data/v9.0/accounts(fca0da1c-8fc3-e711-a825-000d3ae09197)?$select=_primarycontactid_value 将检索指定帐户的主要联系人 ID。

问题是_primarycontactid_value 没有映射到为Account 生成的对象的任何属性,并且当反序列化 JSON 结果时,primarycontactid 属性保留为 null


在下面解决 Darryl 的评论;我决定直接使用 CRM WebAPI(而不是通过 SDK)是基于 here 找到的信息:

如 Microsoft Dynamics CRM 2011 端点中所述,Dynamics CRM 不推荐使用 2011 端点以支持 Web API。弃用 端点是一件大事,尤其是当编程模型 与这两个端点一样不同。我们强烈 鼓励开发人员将 Web API 用于连接的应用程序 到 CRM。 对于插件和工作流程序集,您可以继续使用 SDK 程序集。 在即将发布的版本中,我们将修改这些程序集 以便他们使用 Web API 而不是 2011 端点。

我认为语言很模棱两可。微软表示将使用 SDK 程序集,但也指出它们只能用于插件和工作流


来自 MS 的另一个链接指出应该使用 CRM WebAPI:

https://docs.microsoft.com/en-au/dynamics365/customer-engagement/developer/choose-development-style

【问题讨论】:

  • 您希望通过 SDK 调用使用 WebApi 什么?已经多次说过,SDK 调用将在内部替换为 WebApi 调用...
  • @Daryl 我添加了一个编辑,我试图回答你的问题。简短的回答是,我发现 Microsoft 的文档非常含糊
  • @Daryl 来自 MS 的更多文档说明我们应该使用 WebApi
  • 如果您在 Windows 上进行开发,您应该使用工具程序集(内置于 SDK 中),不是吗?

标签: c# dynamics-crm-online dynamics-crm-365 dynamics-crm-webapi


【解决方案1】:

_primarycontactid_value 属性不会映射到对Contact 实体类的引用,因为它表示Edm.Guid 类型的结构属性。表示Contact 类型的导航属性的属性是Primarycontactid。从下面生成的客户端 SDK 类中复制属性定义:

public global::System.Nullable<global::System.Guid> _primarycontactid_value    
public global::ODataV4Sdk.Contact Primarycontactid

Microsoft 的 OData 客户端库可能具有对扩展导航属性的内置支持,但无法链接或取消链接记录。 OData 库文档中没有示例:http://odata.github.io/odata.net/#04-01-basic-crud-operations

另一方面,Simple.Odata.Client (https://github.com/object/Simple.OData.Client/wiki) 提供类型化语法并支持链接操作,但据我所知,它没有工具支持。这些类需要手动创建。使用无类型语法可以避免创建类的工作,但当然,我们不会让 Intellisense 加速编码,而且拼写错误可能要到运行时才会被发现。

【讨论】:

  • 我正在研究的解决方案是来自不同供应商的解决方案的混合,因此命名约定不一致,所以我经常遇到拼写错误。感谢您的回答,但我有点失望的是,CRM WebApi 目前似乎比以前可用的功能退了一步
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
相关资源
最近更新 更多