QueryExpression 与 FetchXml CRM2011

2023-11-26

我们发现 Linq for CRM 2011 严重损坏 - 它似乎在没有对其进行任何 QA 的情况下就进入了。指示提供程序损坏程度的指标是像 .Where(x => x== "b") 这样的查询有效,但是这个 .Where(x => "b" == x) 可能不依赖于某些前面的条件,例如 a加入声明。实际上,我不得不重写查询提供程序的部分内容,并且我对我整理的垃圾感到幸运。

然而,这种情况不能继续下去,仍然存在其他问题,而且我没有报酬为 MS 工作,所以我正在寻找替代方案。这两个出现了 QueryExpression 和 FetchXml,详细信息如下:http://msdn.microsoft.com/en-us/library/gg334607.aspx

谁能给我一个诚实的、现实生活中使用 QueryExpression 与 FetchXml 的优缺点?我想知道它们在性能、开发速度、稳健性和灵活性方面的比较如何。


为了以 Anwar 重点关注 LINQ 与 FetchXml 的出色答案为基础,我将添加我never use QueryExpression. Why?

LINQ:查询是使用标准语言构建的,但内部使用 QueryExpression因此仅限于QueryExpression的功能。

查询表达式:查询被构建为对象模型。支持所有 FetchXML 中除聚合和分组之外的功能。

所以它的查询能力比FetchXml withoutAdvanced Find 代码生成,它提供与 LINQ 提供程序相同的功能,同时提供完全非标准的查询接口(与 LINQ 不同)。

至于 LINQ(非)功能,LINQ 提供程序的局限性很明显,而且我认为相当好,有记录的. Your .Where(x => "b" == x)例如,片段违反了where条款限制:

where:子句的左侧必须是属性名称,右侧必须是 子句的一侧必须是一个值。您不能将左侧设置为 持续的。该子句的两边不能都是常量。

不捍卫微软:他们需要投入a lot在 LINQ 提供程序达到专业级之前,他们对 LINQ 提供程序(阅读:直接到 SQL 提供程序)的工作进行了很多工作,但是嘿,至少他们有一个很好的免责声明。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QueryExpression 与 FetchXml CRM2011 的相关文章