Наиболее очевидные различия:
Linq к Entities сильно типизированных кода, включая хороший синтаксис понимания запроса. Тот факт, что «от» доходит до «выбора», позволяет IntelliSense помочь вам.
Entity SQL использует традиционные строковые запросы с более знакомым синтаксисом SQL, в котором инструкция SELECT появляется перед FROM. Поскольку eSQL основан на строках, динамические запросы могут быть составлены традиционным способом во время выполнения с использованием строковых манипуляций.
Менее очевидным является ключевым отличием:
Linq к Entities позволяет изменить форму или «проект» результаты запроса в любой форме вы требуете с «выберите новый {...}» синтаксис , Анонимные типы, новые для C# 3.0, разрешили это.
Проекция невозможна с использованием Entity SQL, поскольку вы всегда должны возвращать ObjectQuery <T>. В некоторых сценариях можно использовать ObjectQuery < объект >, однако вы должны обойти тот факт, что .Select всегда возвращает ObjectQuery <DbDataRecord>. Смотрите ниже код ...
ObjectQuery<DbDataRecord> query = DynamicQuery(context,
"Products",
"it.ProductName = 'Chai'",
"it.ProductName, it.QuantityPerUnit");
public static ObjectQuery<DbDataRecord> DynamicQuery(MyContext context, string root, string selection, string projection)
{
ObjectQuery<object> rootQuery = context.CreateQuery<object>(root);
ObjectQuery<object> filteredQuery = rootQuery.Where(selection);
ObjectQuery<DbDataRecord> result = filteredQuery.Select(projection);
return result;
}
Есть другие более тонкие различия, описываемые одним из членов команды подробно here и here.