Как вы думаете, выгодно ли переходить на Entity Framework?

Поскольку LINQ to SQL, скорее всего, не получит такой активной разработки, как Entity Framework, как вы думаете, лучше всего перейти на Entity Framework?

Я лично обнаружил, что EF очень неуклюжий и сложный в использовании по сравнению с LINQ to SQL, который кажется очень естественным.

РЕДАКТИРОВАТЬ: Я недавно разместил в своем блоге статью о своих чувствах к этому потенциальному решению ...

ADO.NET против LINQ в SQL


person Chad Moran    schedule 09.11.2008    source источник


Ответы (8)


ИМО, на данный момент нет.

Это ясно (из особенно недавние объявления), что EF подвергается серьезным изменениям, так как "thunderdome" сценарий разыгрывается между LINQ-to-SQL и EF. Что бы ни случилось, EF (через несколько лет) почти наверняка будет сильно отличаться от EF сегодня. Или, конечно, "достаточно разные" ;-p

Таким образом, я считаю: придерживайтесь простого. И просто LINQ-to-SQL.

Я не вижу особой пользы в изучении заведомо сложной системы, если я знаю, что она скоро изменится.

И я на 100% с вами по LINQ-to-SQL ;-p

Если бы мне прямо сейчас нужно было что-то большее, чем LINQ-to-SQL, я бы посмотрел на NHibernate или, может быть, LLBLGen Pro.

(изменить - в качестве обновления моя позиция немного смягчилась, здесь и здесь - но я все еще использую LINQ-to-SQL в качестве основного инструмента; также - LINQ-to-SQL еще не совсем мертв ;-p).

person Marc Gravell    schedule 09.11.2008
comment
Право на!!! Я люблю L2S, и я полуненавижу EF :) (по вполне конкретным причинам). - person Timothy Khouri; 10.11.2008
comment
@Timothy - да, на то есть причины. Такие люди, как Ян Купер, могут говорить о них весь день ;-p (хороший парень, знает свои ORM-материалы) - person Marc Gravell; 10.11.2008
comment
Согласитесь, на месте! Когда EF vNext и .net 4.0 выйдут, стоит взглянуть еще раз. А пока L2S ... - person KristoferA; 17.11.2008
comment
К сожалению, у MS есть привычка доводить стратегию доступа к данным до 90%, а затем заново изобретать новые стратегии доступа к данным каждые несколько лет, независимо от технических достоинств. - person Robert Paulson; 17.11.2008
comment
LINQ-to-SQL (Server) - это просто ... Как это работает с другими механизмами баз данных? Не очень хорошо, а? - person Jason Short; 04.12.2008
comment
@J Коротко: действительно, чтобы вопрос имел смысл, SQL Server уже должен быть принят. Обратите внимание, что есть также DbLinq для других поставщиков (сторонних поставщиков). - person Marc Gravell; 05.12.2008

Я завершил несколько проектов MVC, которые сейчас находятся в производстве, с L2SQL под капотом, и мне было очень приятно его использовать. Сейчас я приступаю к новому проекту и решил написать его с использованием EF и L2EF, учитывая ранее процитированные статьи, провозглашающие смерть L2SQL. Спустя всего пару дней я решил вернуться к L2SQL. Меня шокировали простые вещи, такие как установка внешних ключей для вставок с использованием ужасного синтаксиса, показанного ниже, или неудачных поисков.

foo.Foreign_TypeReference.EntityKey = 
     new EntityKey("DataContextName.Foreign_Type", "Foreign_Type_Id", ForeignTypeId);

Скорее, чем:

foo.Foreign_Type_Id = ForeignTypeId;

Я не думаю, что будет так сложно портировать L2SQL в будущую версию EF, поскольку L2SQL имеет подмножество функций (хотя и лучше реализовано). Некоторые вещи, которые есть в L2SQL, чего нет в L2EF, например Single () и SingleOrDefault (), можно перенести в EF, создав несколько методов расширения. Я думаю, что потребуется гораздо меньше времени, чтобы запустить систему с использованием L2SQL, а затем перенести ее позже, когда EF не будет таким вонючим.

person LaserJesus    schedule 03.02.2009
comment
Это в значительной степени подводит итог для меня. Надеюсь, EF vNext будет красивее. - person Marc Gravell; 03.02.2009

Если вы занимаетесь разработкой на основе баз данных, у EF сегодня есть реальные преимущества.

Я использовал LINQ to SQL и EF и преодолел множество мелких разочарований, связанных с EF v1.

Однако единственное, что заставило меня победить EF v1, - это удивительно хороший мастер обновления из базы данных. Невероятно, но это действительно работает! Это может показаться тривиальным, но если вы проектируете сначала базу данных, вы хотите полагаться на инструменты для создания классов за вас, и вам не нужно регенерировать всю модель только для того, чтобы внести изменения.

Одно это делает мой выбор EF v1. Я предлагаю игнорировать расширенные функции EF v1 - он еще далеко не годится к использованию, поскольку является амбициозной платформой, к которой он стремится.

Смиритесь с неуклюжестью EF v1, и в будущем вы будете в лучшем положении.

Пит.

person Pete Montgomery    schedule 11.12.2008
comment
«Хорошее» обновление от мастера баз данных »?? Тот, который не обнаружит, если вы измените допустимость значений NULL, тип данных и т. Д. В существующих столбцах? Тот, который заменяет всю часть SSDL EDMX, когда что-то обновляется, перезаписывая любые настройки, которые вы, возможно, сделали для него? - person KristoferA; 11.12.2008
comment
(продолжение) Тот, который не может повторно добавить удаленный объект, если вы не используете XML-редактор для ручного удаления артефактов SSDL? Да ладно, говорят, в Visual Studio 2010 будет лучше. А пока я придерживаюсь L2S и обновляю свою модель с помощью инструмента синхронизации для моделей L2S, которые применяют изменения только. - person KristoferA; 11.12.2008

Я должен согласиться с Марком Гравеллом. Возможно, когда будет выпущена следующая версия Entity Framework (.net 4.0 / VS2010), появится преимущество использования EF, и к тому времени она, вероятно, будет сильно отличаться от текущей версии EF.

По крайней мере, до тех пор я буду избегать EF как чумы для чего-либо, кроме тестов / экспериментального кода, который никогда не попадет в производство.

форум EF msdn полон примеров того, почему EF не готов к выходу в прайм-тайм, но есть один конкретный пример < / a> это явный победитель - то, что обычно было бы простым запросом из пяти таблиц (10-15 строк SQL), становится > 1500 строк SQL при использовании EF и элемента управления EntityDataSource:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3874607&SiteID=1

http://paste-it.net/public/q6ed5c2/

А что касается будущего EF - с историей изменения направления от Microsoft о важных стратегических вещах в одночасье, кто знает, сбудется ли их текущая «стратегическая цель» с EF через пару лет? Я бы точно не стал на это ставить. Видеть:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=4100399&SiteID=1#4107623

person KristoferA    schedule 17.11.2008
comment
Этот запрос на 1500 строк просто смешон, я не могу в это поверить. - person Chad Moran; 22.04.2009
comment
Ага, такие чудовищные запросы ... удивительны. Вот еще один интересный пример; простой запрос с группировкой + агрегацией по двум таблицам. L2S генерирует эффективный запрос, L2E - нет. social.msdn.microsoft. ru / Forums / en-US / adodotnetentityframework / - person KristoferA; 30.04.2009

Для записи, некоторые сомнения относительно будущего LINQ to SQL были выражены здесь:

Является ли LINQ to SQL DOA?

Действительно ли Microsoft убила LINQ to SQL?

person DOK    schedule 09.11.2008
comment
Но мой ключевой момент: несмотря на то, что существует такой большой поток, большие инвестиции - это ошибка. LINQ-to-SQL требует очень небольших вложений, поэтому я не вижу в этом большого риска. - person Marc Gravell; 09.11.2008
comment
Я полностью согласен, Марк. Я просто указываю для тех, кто может не знать (как я не знал, пока не прочитал об этом недавно на SO), что LINQ to SQL не лишен некоторого риска. Низкий риск и, безусловно, высокая краткосрочная выгода. По количеству SO-вопросов вы можете сказать, что это очень популярно. - person DOK; 09.11.2008
comment
Верно. Должен полюбить стратегию: убить реализацию, которая действительно нравится людям ;-p Честно говоря, это намного сложнее, и я с нетерпением жду реального ответа через несколько лет (.NET 4.0). У MS есть небольшая гора PR / уверенности разработчиков, чтобы подняться здесь. Надеюсь, у них получится ... - person Marc Gravell; 10.11.2008
comment
... потому что на самом деле LINQ - одна из самых новаторских, впечатляющих и амбициозных концепций, которые я видел за долгое время. Было бы очень обидно, если бы он был испорчен битвой между двумя конкурирующими реализациями сами по себе. - person Marc Gravell; 10.11.2008
comment
Аминь, брат. Действительно, Грозовой купол. - person DOK; 10.11.2008

LINQ to SQL, похоже, не подходит, если вы не используете SQL Server (или SQL Server compact), поэтому для меня это было достаточной причиной, чтобы избежать этого и использовать EF (я хотел использовать PostgreSQL).

В v1 EF определенно не хватает вещей, поэтому я не решусь рекомендовать его. Похоже, что версия 2 EF (когда она будет выпущена) будет первой версией, которую можно серьезно рекомендовать для перехода на.

person J c    schedule 19.11.2008
comment
Spot on - l2s - это ТОЛЬКО SQL Server. EF = другие провайдеры - person Jason Short; 04.12.2008

Немало опытных разработчиков предоставили "ADO .NET Entity Framework: вотум недоверия ", как подробно обсуждается здесь.

Я думаю, мы ожидаем его значительного улучшения в . Net 4.0 командой ADO.Net.

А вот несколько видео с недавнего PDC.

person DOK    schedule 09.11.2008

Недавно мне пришлось исследовать, какой проект ORM следует использовать. Сначала - попробовал L2S. Это было неплохо, но оно уже устарело (MS его больше не поддерживает), поэтому я начал проверять L2E. Меня устраивает сгенерированный код, но создание поддельных представлений, сущностей и сопоставлений между ними только для того, чтобы сделать хранимую процедуру доступной, чтобы не заполнять все поля сущности, было для меня излишним. И я хотел отделить свой слой доступа к данным, поэтому мне пришлось сопоставить данные из сгенерированных объектов с теми, которые я создал.

Мне потребовалось несколько часов экспериментов с NHibernate + Fluent NHibernate + LINQ to NHibernate
, чтобы придерживаться этой комбинации.

person Arnis Lapsa    schedule 24.05.2009
comment
Это неверно. В настоящее время у Microsoft есть 5 разработчиков по LINQ to SQL. - person Chad Moran; 25.05.2009
comment
ага ... Вчера читал, что исправляют баги. Моя ошибка. В любом случае - это не меняет моего мнения. - person Arnis Lapsa; 26.05.2009
comment
В .NET 4.0 будет несколько улучшений LINQ To SQL damieng.com/blog/2009/06/01/linq-to-sql-changes-in-net-40 - person Paul Mendoza; 19.11.2009
comment
@Paul, я написал этот ответ ДО этого сообщения в блоге. - person Arnis Lapsa; 19.11.2009