Считаете ли вы, что переход на Entity Framework выгоден?

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

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

Обновлено: Я недавно разместил в своем блоге статью о своих чувствах к этому потенциальному решению ...

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
25
0
3 375
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Ответ принят как подходящий

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

Ясно (особенно из последние объявления), что EF подвергается серьезным изменениям, поскольку сценарий «громовой купол» разыгрывается между 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).

Право на!!! Я люблю L2S и полуненавижу EF :) (по вполне конкретным причинам).

Timothy Khouri 10.11.2008 00:20

@ Тимати - да, на то есть причины. Такие люди, как Ян Купер, могут говорить о них весь день ;-p (хороший парень, знает свои ORM-материалы)

Marc Gravell 10.11.2008 00:44

Согласитесь, на высоте! Когда EF vNext и .net 4.0 выйдут, стоит взглянуть еще раз. А пока L2S ...

KristoferA 17.11.2008 06:16

К сожалению, у MS есть привычка доводить стратегию доступа к данным до 90%, а затем заново изобретать новые стратегии доступа к данным каждые несколько лет, независимо от технических достоинств.

Robert Paulson 17.11.2008 06:43

«LINQ-to-SQL (Server) - это просто» ... Как это работает с другими механизмами баз данных? Не очень хорошо, а?

Jason Short 04.12.2008 20:40

@J Коротко: действительно, чтобы вопрос имел смысл, SQL Server уже должен быть принят. Обратите внимание, что есть также DbLinq для других поставщиков (сторонних поставщиков).

Marc Gravell 05.12.2008 00:04

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

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

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

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

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

Неужели Microsoft убила LINQ to SQL?

Но мой ключевой момент: несмотря на то, что существует такой большой поток, большие инвестиции - это ошибка. LINQ-to-SQL требует очень небольших вложений, поэтому я не вижу в этом большого риска.

Marc Gravell 09.11.2008 23:46

Я полностью согласен, Марк. Я просто указываю для тех, кто может не знать (как я не знал, пока не прочитал об этом недавно на SO), что LINQ to SQL не лишен некоторого риска. Низкий риск и определенно высокая краткосрочная выгода. По количеству SO-вопросов вы можете сказать, что это очень популярно.

DOK 09.11.2008 23:52

Верно. Должен полюбить стратегию: убить реализацию, которая действительно нравится людям ;-p Честно говоря, это намного сложнее, и я с нетерпением жду «настоящего» ответа через несколько лет (.NET 4.0). У MS есть небольшая гора PR / уверенности разработчиков, чтобы подняться здесь. Надеюсь, у них получится ...

Marc Gravell 10.11.2008 00:04

... потому что на самом деле LINQ - одна из самых новаторских, впечатляющих и амбициозных концепций, которые я видел за долгое время. Было бы очень обидно, если бы он был испорчен битвой между двумя конкурирующими реализациями сами по себе.

Marc Gravell 10.11.2008 00:06

Аминь, брат. Действительно, Грозовой купол.

DOK 10.11.2008 00:08

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

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

EF msdn форум полон примеров того, почему EF не готов к работе в прайм-тайм, но есть один конкретный пример, который является явным победителем - то, что обычно было бы простым запросом из пяти таблиц (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

Этот запрос на 1500 строк просто смехотворен, я не могу в это поверить.

Chad Moran 22.04.2009 00:12

Ага, такие запросы-монстры ... удивительны. Вот еще один интересный пример; простой запрос с группировкой + агрегацией по двум таблицам. L2S генерирует эффективный запрос, L2E - нет. social.msdn.microsoft.com/Forums/en-US/adodotnetentityframew‌ ork /…

KristoferA 30.04.2009 14:56

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

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

Spot on - l2s - это ТОЛЬКО SQL Server. EF = другие провайдеры

Jason Short 04.12.2008 20:40

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

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

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

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

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

Пит.

«Хорошее» обновление от мастера баз данных »?? Тот, который не обнаружит, если вы измените допустимость NULL, тип данных и т. д. В существующих столбцах? Тот, который заменяет всю часть SSDL EDMX, когда что-то обновляется, перезаписывая любые настройки, которые вы, возможно, сделали для него?

KristoferA 11.12.2008 06:33

(продолжение) Тот, который не может повторно добавить удаленный объект, если вы не используете XML-редактор для ручного удаления артефактов SSDL? Да ладно, говорят, в Visual Studio 2010 будет лучше. А пока я придерживаюсь L2S и обновляю свою модель с помощью инструмента синхронизации для моделей L2S, которые применяют изменения Только.

KristoferA 11.12.2008 06:35

Я завершил несколько проектов 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 не будет таким вонючим.

Это в значительной степени подводит итог для меня. Надеюсь, EF vNext будет красивее.

Marc Gravell 03.02.2009 12:16

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

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

Это неверно. В настоящее время у Microsoft есть 5 разработчиков по LINQ to SQL.

Chad Moran 25.05.2009 22:08

ага ... Вчера читал, что исправляют баги. Виноват. В любом случае - это не меняет моего мнения.

Arnis Lapsa 26.05.2009 10:31

В .NET 4.0 будет несколько улучшений LINQ To SQL damieng.com/blog/2009/06/01/linq-to-sql-changes-in-net-40.

Paul Mendoza 19.11.2009 22:17

@Paul, я написал этот ответ ДО этого сообщения в блоге.

Arnis Lapsa 19.11.2009 22:44

Другие вопросы по теме