and*_*eer 5 c# linq dynamics-crm
希望有人可以从性能的角度对 using OrganizationServiceContext.CreateQueryvs using FetchXML(or QueryExpression)有所了解。
我已经广泛使用了LINQCRM ,但我是新手。CreateQuery看起来很适合我的技能,但我想知道最终的表现。
我直接意识到
var result = from e in orgContext.CreateQuery("xyz_myentity")
where e["email"] == "someone@example.com"
select e;
Run Code Online (Sandbox Code Playgroud)
将返回 的所有属性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"] };
Run Code Online (Sandbox Code Playgroud)
是否还有其他与引入 相关的考虑因素OrganizationServiceContext?
用于 CRM 的 LINQ 建立在 CRM 之上,QueryExpression因此具有几乎相同的限制。它在 Microsoft.Xrm.Sdk 库中在客户端实现。库将QueryExpression请求发送到 CRM Web 服务。
LINQ 向查询堆栈添加了一个抽象层(LINQ -> QueryExpression -> SQL),因此您可以预期性能会有所下降。
FetchXML是可用于查询 CRM 的最古老的技术。微软表示它在服务器上的性能稍差。编写 FetchXml 查询归结为构造 XML 消息,因此通常编程经验很差。
在OrganizationServiceContext需要处理LINQ查询; 它是一个能够跟踪数据对象变化的对象。众所周知,它存在一些问题,并且同样需要付出代价。例如,不建议跟踪大量数据。
当我不得不在 LINQ 和 LINQ 之间做出选择时,QueryExpression我仍然倾向于后者。当您需要查询CRM时,它是最轻量级的技术,并且借助一些扩展方法,编程体验还可以。
(注:CRM 2016 添加了使用 Web API 的新查询方法。)
| 归档时间: |
|
| 查看次数: |
1412 次 |
| 最近记录: |