OrganizationServiceContext.CreateQuery 与获取
OrganizationServiceContext.CreateQuery vs Fetch
希望有人能从性能的角度阐明使用 OrganizationServiceContext.CreateQuery
与使用 FetchXML
(或 QueryExpression
)的区别。
我广泛使用了 LINQ
但我是 CRM 的新手。 CreateQuery
似乎很适合我的技能,但我想知道最终的表现。
我明白了
var result = from e in orgContext.CreateQuery("xyz_myentity")
where e["email"] == "someone@example.com"
select e;
将 return xyz_myentity
的所有属性,但我似乎找不到位于 CRM 之上的 LINQ 提供程序的任何文档。使用匿名类型会限制从 SQL / CRM 编辑的属性 return 吗?还是在从服务器 return 编辑了完整数据集后 "client" 方面正在完成魔法? 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 库中实现 client-side。图书馆向 CRM 网络服务发送 QueryExpression
个请求。
LINQ 向查询堆栈添加了一个抽象层(LINQ -> QueryExpression -> SQL),因此您可以预期性能会受到一些影响。
FetchXML 是可用于查询 CRM 的最古老技术。微软表示它在服务器上的性能稍差。编写 FetchXml 查询归结为构造 XML 消息,因此总体来说编程体验很差。
处理 LINQ 查询需要 OrganizationServiceContext
;它是一个能够跟踪数据对象变化的对象。众所周知,它存在一些问题,而且它也需要付出代价。例如。跟踪大量数据是不可取的。
当我必须在 LINQ 和 QueryExpression
之间做出选择时,我仍然倾向于后者。查询CRM时最light-weight的技术,借助一些扩展方法,编程体验还可以。
(注:CRM 2016新增Web查询方式API。)
希望有人能从性能的角度阐明使用 OrganizationServiceContext.CreateQuery
与使用 FetchXML
(或 QueryExpression
)的区别。
我广泛使用了 LINQ
但我是 CRM 的新手。 CreateQuery
似乎很适合我的技能,但我想知道最终的表现。
我明白了
var result = from e in orgContext.CreateQuery("xyz_myentity")
where e["email"] == "someone@example.com"
select e;
将 return xyz_myentity
的所有属性,但我似乎找不到位于 CRM 之上的 LINQ 提供程序的任何文档。使用匿名类型会限制从 SQL / CRM 编辑的属性 return 吗?还是在从服务器 return 编辑了完整数据集后 "client" 方面正在完成魔法? 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 库中实现 client-side。图书馆向 CRM 网络服务发送 QueryExpression
个请求。
LINQ 向查询堆栈添加了一个抽象层(LINQ -> QueryExpression -> SQL),因此您可以预期性能会受到一些影响。
FetchXML 是可用于查询 CRM 的最古老技术。微软表示它在服务器上的性能稍差。编写 FetchXml 查询归结为构造 XML 消息,因此总体来说编程体验很差。
处理 LINQ 查询需要 OrganizationServiceContext
;它是一个能够跟踪数据对象变化的对象。众所周知,它存在一些问题,而且它也需要付出代价。例如。跟踪大量数据是不可取的。
当我必须在 LINQ 和 QueryExpression
之间做出选择时,我仍然倾向于后者。查询CRM时最light-weight的技术,借助一些扩展方法,编程体验还可以。
(注:CRM 2016新增Web查询方式API。)