По-моему, я обычно выбираю Linq или FetchXml в зависимости от требований.
Для Linq: в случае раннего связывания мне нравится использовать 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 мне нужно открыть Advanced-Find, затем добавить столбцы, затем поставить свои критерии и т. Д. Наконец, я загружаю его и копирую в свой код и т. Д.
Наконец, FetchXML имеет наименьшие ограничения среди других.
Что касается производительности, которую я пытался сравнить между Linq и FetchXML для одного и того же запроса, используя StopWatch , то результат был FetchXML быстрее, чем Linq.