我们发现Linq for CRM 2011遭到了严重破坏-它似乎没有进行任何质量检查就加入了。一个指示符,如.Where(x => x ==“b”)的查询对提供者的破坏程度很严重,但是这个.Where(x =>“b” == x)可能不取决于诸如a之类的先前条件。加入声明。实际上,我不得不重写查询提供程序的某些部分,并且享受我提供的废话带来的更好的运气。

但是,这种方法无法继续进行,仍然存在其他问题,我没有报酬为MS工作,因此我正在寻找替代方案。这2个出现在QueryExpression&FetchXml中,详细信息如下:http://msdn.microsoft.com/en-us/library/gg334607.aspx

谁能给我诚实,现实生活中使用QueryExpression与FetchXml的利与弊的信息?我想知道它们如何在性能,开发速度,健壮性和灵活性方面进行比较。

最佳答案

在我看来,我通常会根据需求选择Linq或FetchXml。

对于Linq:对于早期绑定(bind),我喜欢使用Linq,因为它的类型很强,并且对提高开发速度有很大帮助,但是正如您上面所说的,它有其缺点。

对于FetchXML:我真的很喜欢使用以下魔术语句:

EntityCollection result = _serviceProxy.RetrieveMultiple(new FetchExpression(fetch2));

foreach (var c in result.Entities)
{
   System.Console.WriteLine(c.Attributes["name"]);
}

为什么?因为除了聚合分组之外,使用QueryExpression非常相似。
我讨厌FetxhXML的唯一一件事就是它很难构建,这与Linq不同。

为了构建FetchXML查询,我必须打开“高级查找”,然后添加列,然后放置我的条件,等等,最后我将其下载并将其复制到我的代码中,依此类推。

最后,FetchXML在其他方面的限制最少。

关于性能,我尝试使用 StopWatch 对同一查询在Linq和FetchXML之间进行基准测试,结果是FetchXML比Linq更快。

关于linq - QueryExpression与FetchXml CRM2011,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9182200/

10-09 19:02