Я проверял 2-й выпуск Профессионала ASP.NET, MVC и реализованный EF заменили LINQ к SQL. Я знаком LINQ к SQL из первой книги, но я ничего не знаю о EF. Так или иначе при чтении кода, кажется, что ничто не изменилось кроме имени. Те же старые классы репозитория, те же старые функции.
Я провел немного исследования. Я знаю, что LINQ не ограничен SQL. Также EF не является ограниченными SQL-серверами семейства Microsoft. В этом 2-летнем вопросе люди не довольны EF, говоря, что он является сверхсложным и так далее. Но теперь я читаю тот же код под именем EF. Только классы сгенерированы с Моделью Объекта ADO.NET insted LINQ к SQL. Кто-либо может убрать суету о функциях EF, так как это - фактический стандартный ORM теперь?
Они в чем-то похожи и могут использоваться очень похожим образом в коде, но у них есть некоторые важные отличия. Обратите внимание, что «LINQ» - это не то же самое, что «LINQ to SQL»; EF также использует LINQ. Вот некоторые заметные отличия:
Новейший EF гораздо более надежен, и вы не вынуждены работать с псевдо-ORM, управляемым дизайнером (или с огромным количеством конфигураций, если вы пытались сделать это без дизайнера). Ваша модель теперь может быть POCO-объектами, а не каким-то управляемым дизайнером частичным классом, который неразрывно связан с управляемым дизайнером кодом, вы можете полностью уйти от дизайнера, не чувствуя, что плывете по течению, и в целом чувствуется, что они просто прислушались к сообществу или действительно попытались эмулировать существующие, проверенные в боях решения, вместо того, чтобы делать версию для "мортышек" или как там предполагалось L2Sql.
EF достигла совершеннолетия с версией 4.0. До этого было немного больно использовать, и я не рекомендовал его. Теперь я рекомендую, чтобы весь новый код LINQ-to- DB использовал EF4.
Что касается новых функций, то часть LINQ на самом деле очень похожа на LINQ to SQL. Но это совершенно другая архитектура: EF4 действует как поставщик LINQ для поставщика (EF) ADO.NET, который затем является оболочкой другого поставщика ADO.NET. Итак, появились новые вещи, такие как Entity SQL (который я не использую) и EF, поддерживающий различные базовые поставщики ADO.NET (которые я использую).
Система моделирования XML, которую использует EF, также позволяет более мощные абстракции отображения . Я регулярно использую разные таблицы с одинаковыми первичными ключами, сопоставленными с отношениями наследования сущностей; насколько я понимаю, единственный способ сделать это в LINQ to SQL - использовать «столбец селектора» (хотя я никогда не пробовал этого в LINQ to SQL).