哪个 C# OData 客户端库用于 Dynamics CRM 365 Web Api?

Tam*_*nar 7 c# dynamics-crm odata .net-core

我正在通过它的 OData Web Api 调用 Dynamics 365,我想知道我可以使用哪个客户端库来简化编程。

我的用例是我主要必须与一个实体合作:联系人。我想检索一些数据、编辑数据并创建新联系人。我正在以类似方式使用的另一种实体类型是地址。一个联系人可以有多个地址。

当前,我使用普通的 HTTP 客户端类与 Dynamics 进行通信。

我正在为 Linux 主机开发 .NET Core 应用程序,因此我无法使用 Dynamics CRM SDK(SOAP 端点)。

我的问题是您的建议是:我应该使用Microsoft.OData.Client还是Simple.OData.Client?或者其他图书馆?

我尝试使用 Microsoft.OData.Client 并根据这篇文章生成了一个客户端(代理/包装器):https : //blogs.msdn.microsoft.com/odatateam/2014/03/11/tutorial-sample-how-to -use-odata-client-code-generator-to-generate-client-side-proxy-class/

问题在于它会生成一个 .cs 文件,文件大小为 86 MB。也许以后使用这个客户端可能是一个解决方案,但在我们的项目中拥有如此大的源文件似乎是错误的。我想避免它,但我没有找到生成它的选项如果我不小心打开它,Visual Studio 崩溃,智能感知有时会变慢,如果 ReSharper 被打开 VS 会变慢,等等......

我检查了 Simple.OData.Client 并且似乎有很好的文档和 API。例如:https : //github.com/object/Simple.OData.Client/wiki/Retrieving-data

对于 Microsoft.OData.Client 我没有找到如何在不生成整个客户端的情况下以键入方式使用它的文档。那可能吗?我只发现了这个,其中使用了生成的上下文:http : //odata.github.io/odata.net/v6/#04-01-basic-crud-operations

我认为使用 Simple.OData.Client 似乎是一个更好的选择,但我更喜欢使用 Microsoft 库。你有什么建议吗?

Roh*_*han 5

我刚刚实现了从 Azure 应用程序服务中运行的 .Net Core Web 应用程序到 Dynamics 365 Web API 的集成(作为 POC)。这包括读取参考数据(连接不同的实体)和使用参考数据列修改实体。

我发现完整的 OData 接口生成是有问题的:

  • 找不到支持OAuth2授权和VS2019的工具
  • 包含导航属性/功能/操作以及具有所有字段的所有实体的完整界面定义变得难以导航,并且 VS 导航缓慢。
  • 根据您要使用的 OData 客户端,它将通过网络发送比所需更多的信息,并增加复杂性,这不符合底层 REST OData 服务的精神。
  • 生成的代码工具违反了 C# 编码规则(使用事件、抽象等保留关键字,还生成与封闭类型同名的成员),需要手动更正。

经过大量研究后,我开始使用Simple.OData.Client,因为这允许我

  • VS2019/.Net core 兼容工具集/运行时
  • 使用 OAuth2 不记名令牌连接到 Dynamics 365 OData Web API
  • 在VS中编写键入代码
  • 仅创建我需要的实体模型/导航属性等
  • 可以仅选择您需要返回的实体属性,而不是 200 个(较小的有效负载)

您必须自己创建类型化流利 API 中使用的实体类

如果您希望 CRM 实体名称在 CRM / C# 代码之间不同,请使用 DataContract 属性。然后,Simple.OData 将在进行 Http 调用时使用 DataContract 属性。

不幸的是,当我开始深入研究 OAuth2 授权和导航属性等问题时,我并没有发现文档那么有洞察力,但确实在 github 问题和一些高级教程(例如 https://www.odata)等辅助来源中找到了所有答案。 org/blog/advanced-odata-tutorial-with-simple-odata-client/

此外,使用 Fiddler 查看来回通信​​对于了解正在发生的情况非常有用。


小智 -3

Microsoft 推出了 Web API,这是一种 RESTful Web 服务,您可以使用各种平台、编程语言和设备与 Dynamics 365 中的数据进行交互。

https://learn.microsoft.com/en-us/dynamics365/customer-engagement/developer/webapi/perform-operations-web-api

这是一种以编程方式与 Dynamics 365 进行通信的新方式。

有多个库可供您使用。从下面的文章中,您可以找到这些。

https://community.dynamics.com/crm/b/briteglobalsolutions/archive/2017/10/22/webapi-library-comparison-in-dynamics-365

我个人使用过 David Yack 的库。

https://github.com/davidyack

希望这可以帮助。