gpt4 book ai didi

c# - OrganizationServiceContext.CreateQuery 与获取

转载 作者:太空狗 更新时间:2023-10-30 01:33:09 24 4
gpt4 key购买 nike

希望有人能从性能的角度阐明使用 OrganizationServiceContext.CreateQuery 与使用 FetchXML(或 QueryExpression)的区别。

我广泛使用了 LINQ 但对 CRM 还是陌生。 CreateQuery 似乎很适合我的技能组合,但我想知道最终的性能。

我意识到了这一点

var result = from e in orgContext.CreateQuery("xyz_myentity")
where e["email"] == "someone@example.com"
select e;

将返回 xyz_myentity 的所有属性,但我似乎无法找到位于 CRM 之上的 LINQ 提供程序的任何文档。使用匿名类型会限制从 SQL/CRM 返回的属性吗?或者是在从服务器返回全套数据后在“客户端”完成魔术?是针对所有属性的 SQL 查询,然后 LINQ 提供程序是否在此基础上构建匿名类型?

var result = from e in orgContext.CreateQuery("xyz_myentity")
where e["email"] == "someone@example.com"
select new { Name=e["xyz_name"] };

是否有与引入 OrganizationServiceContext 相关的任何其他注意事项?

最佳答案

CRM 的 LINQ 建立在 QueryExpression 之上,因此具有几乎相同的限制。它在 Microsoft.Xrm.Sdk 库中在客户端实现。图书馆向 CRM 网络服务发送 QueryExpression 请求。

LINQ 向查询堆栈添加了一个抽象层(LINQ -> QueryExpression -> SQL),因此您可以预期性能会受到很小的影响。

FetchXML 是可用于查询 CRM 的最古老的技术。微软表示它在服务器上的性能稍差。编写 FetchXml 查询归结为构造 XML 消息,因此总体来说编程体验很差。

OrganizationServiceContext 是处理 LINQ 查询所必需的;它是一个能够跟踪数据对象变化的对象。众所周知,它存在一些问题,而且它也需要付出代价。例如。跟踪大量数据是不可取的。

当我必须在 LINQ 和 QueryExpression 之间做出选择时,我仍然倾向于后者。当你需要查询CRM时,它是最轻量级的技术,借助一些扩展方法,编程体验还可以。

(注:CRM 2016新增了一种使用Web API的查询方式。)

关于c# - OrganizationServiceContext.CreateQuery 与获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34666986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com