LINQ или ADO.net Entity Framework — что изучать?

Небольшое уточнение: я просматривал заголовок Джулии Лерман Oreilly на платформе Entity и сильно запутался.

У меня есть основной LINQ Чарли Калверта, но из моего 10-минутного сеанса с книгой Лермана выясняется, что LINQ - это LINQ to SQL, который кажется недостаточно мощным с его объектом DataContext и т. д.

Принимая во внимание, что Entity Framework — это будущее, но в нем есть нечто, называемое Entity SQL, которое, на мой взгляд, выглядит точно так же, как Transact-SQL. Теперь мой глаз может быть немного ржавым, но вопрос:

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

        var numberGroups =
            from n in numbers
            group n by n % 5 into g
            select new { Remainder = g.Key, Numbers = g };

И я смущен, думая, что Entity SQL и LINQ - это две разные технологии, действительно ли Entity SQL использует LINQ?

опубликуйте множество ответов, которые я получил:

Хорошо, ребята, я новичок в этом, поэтому на этот раз я редактирую свой ответ ;-) Большое спасибо за ваши полные, быстрые и очень полезные ответы. С уважением MereMortal


person MereMortal    schedule 14.05.2009    source источник
comment
Многие не согласятся с тем, что за Entity Framework будущее: efvote.wufoo.com/forms/ :)   -  person BobbyShaftoe    schedule 15.05.2009
comment
К сожалению, это письмо совершенно неактуально. Они подождали, пока EF уже не будет выпущен, прежде чем написать его, так что это скорее нытье о том, что их проигнорировали, чем просьба о каких-то изменениях. Это даже не считается желаемым за действительное.   -  person John Saunders    schedule 15.05.2009
comment
Итак, применим ли синтаксис, который я изучаю с помощью LINQ to SQL, к LINQ to Entities (я знаю, что сущности имеют большую настройку и XML-файлы, описывающие метаданные), но чтобы получить ответ, это один и тот же запрос в обоих случаях?   -  person MereMortal    schedule 15.05.2009
comment
Кроме того, вам было бы полезно знать основы ADO.NET, если вы еще не знакомы с ней. Все сводится к реализации ADO.NET. Разумно понимать, что происходит за кулисами. Эти базовые знания будут полезны при отладке и устранении неполадок. Например, если автоматизированный процесс обработки данных не может получить ожидаемые данные, вы можете быстро запустить проверочный тест с использованием объектов ADO.NET, чтобы убедиться, что проблема связана с ADO и вашим кодом. Это также очень полезно при работе с унаследованным кодом .NET 1, когда у вас не было другого выбора, кроме как использовать ADO.NET.   -  person Mike Christian    schedule 10.05.2011
comment
Добро пожаловать из мертвых! Linq 2 Sql жив и работает на Windows Phone!   -  person    schedule 12.06.2012


Ответы (8)


LINQ != LINQ-to-SQL

LINQ — это концепция, включающая некоторую языковую поддержку. Существует множество реализаций: LINQ-to-SQL — одна из них, как и ADO.NET Data Services, LINQ-to-Entities Entity Framework, LINQ-to-Objects, LINQ-to-SQL, LINQ-to-Amazon, DbLinq и т. д. .

Вы по-прежнему используете LINQ с Entity Framework; действительно, LINQ-to-Entities является предпочтительным выбором, поскольку обеспечивает статическую проверку во время компиляции. Entity SQL — это просто еще один механизм (в дополнение к LINQ-to-Entities) для запросов к EDM (Entity Data Model).

Есть 3 основные причины, по которым ESQL полезен:

  • это был единственный вариант в ранних предварительных версиях, когда LINQ-to-Entities все еще находился в разработке.
  • его можно использовать в некоторых сценариях, где отсутствует объектная модель, например, службы отчетов.
  • есть небольшое количество случаев, когда ESQL более выразительный

Во всем остальном LINQ должен быть вашим инструментом для работы с Entity Framework.

person Marc Gravell    schedule 14.05.2009
comment
Марк, eSQL также хорош для динамических запросов. Конечно, вы можете делать то же самое с манипуляциями с выражениями и т. д., но большинству людей гораздо удобнее манипулировать строками, чем деревьями выражений. - person Alex James; 15.05.2009
comment
Entity SQL можно использовать с теми языками программирования, которые не поддерживают LINQ, например Managed C++. - person Nilesh Gule; 17.09.2010

LINQ — это общий термин для языковых функций, позволяющих писать запросы на C# или VB.NET к какому-либо хранилищу данных. Есть LINQ to SQL, LINQ to Entities, LINQ to Objects и т.д.

LINQ to SQL точно моделирует физическую структуру базы данных. Он создает один тип для каждой таблицы в базе данных. Если ваша база данных изменится, ваш код LINQ to SQL должен будет измениться.

LINQ to Entities более точно моделирует концептуальную структуру базы данных. Это позволяет вам сопоставлять физическую базу данных, но, например, позволяет вам создать одну сущность Person, которая включает данные из обеих таблиц Person и Contacts. Это позволяет вызывающим абонентам думать о том, что данные означают, а не о том, как они реализованы.

Кроме того, Microsoft заявила, что дальнейшее развитие LINQ to SQL будет ограничено по сравнению с развитием LINQ to Entities. Учитывая повышенную гибкость и тот факт, что LINQ to SQL не получит еще много улучшений, я бы выбрал LINQ to Entities и Entity Framework.

person John Saunders    schedule 14.05.2009

Как говорили другие, вы, вероятно, имеете в виду Linq to SQL против Entity Framework.

Оба работают для SQL Server, но только Entity Framework будет работать для других баз данных. Кроме того, LINQ to SQL более или менее обесценился. Так что используйте Entity Framework.

person Chris Brandsma    schedule 14.05.2009

Linq — это программная конструкция, позволяющая запрашивать ваши объекты.

есть Linq to Sql, о котором, я думаю, вы говорите.

вы всегда можете использовать linq для запроса объектов EF...

person Ali Shafai    schedule 14.05.2009

ВОУ ВОУ. Там помедленнее.

Краткий ответ: Entity Framework

Длинный ответ:

LINQ to SQL и Entity Framework — это технологии доступа к данным.

Linq, согласно MS,

LINQ — это набор расширений для .NET Framework, которые охватывают интегрированные в язык операции запроса, установки и преобразования. Он расширяет C# и Visual Basic синтаксисом нативного языка для запросов и предоставляет библиотеки классов, позволяющие воспользоваться этими возможностями.

из: http://msdn.microsoft.com/en-us/netframework/aa904594.aspx

И LINQ to SQL, и Entity Framework имеют поставщиков Linq, которые позволяют использовать этот замечательный синтаксис при выполнении запросов к ним.

person Min    schedule 14.05.2009

Entity Framework имеет LINQ to Entities, поэтому вы можете выполнить тот же запрос и к EF. И мой ответ будет заключаться в том, чтобы больше инвестировать в EF, потому что грядущий EFv4 кажется многообещающим.

person Sergejus    schedule 14.05.2009

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

Если вы можете использовать SQL Server для своего приложения, я говорю сегодня, изучите LINQ2SQL. У вас будет больше возможностей для запросов при использовании LINQ.

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

Удачи.

person Linus    schedule 15.05.2009
comment
EF4 (который будет поставляться в .NET 4.0/VS2010), кажется, исправляет многие недостатки и недостатки текущего EF и выглядит очень многообещающе! blogs.msdn.com/adonet/archive/tags/Entity+ Фреймворк/ - person marc_s; 15.05.2009
comment
Большое спасибо за этот действительно полезный ответ, Линус, я сам начал приходить к такому же выводу. Я рассудил, что EF довольно сложен, и отрываю себя от команды/соединения ADO.Net/и т. д. Изучение LINQ to SQL, вероятно, является хорошим и полезным первым шагом, плюс есть много хороших ссылок на LINQ to SQL, в то время как EF об этом не так много написано. - person MereMortal; 15.05.2009

Я посещаю Microsoft TehcDays в Монреале 2 и 3 декабря, и они сказали, что больше не будут поддерживать LINQ to sql через несколько лет, поэтому вам лучше начать изучать LinQ to entity (Entity framework).

person Cédric Boivin    schedule 05.12.2009
comment
LINQ to SQL был краткосрочным решением. Как следует из названия, он работает только с SQL-сервером. С другой стороны, EF поддерживает несколько баз данных. Вы можете обратиться к одному из сообщений в блоге, которые я написал ранее, сравнивая две технологии nileshgule.blogspot.com/2010/09/ - person Nilesh Gule; 17.09.2010