LINQ или ADO.net Entity Framework - чему учиться? - PullRequest
12 голосов
/ 15 мая 2009

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

У меня есть необходимый 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

Ответы [ 8 ]

25 голосов
/ 15 мая 2009

LINQ! = LINQ-to-SQL

LINQ - это концепция, включающая некоторую языковую поддержку. Существует много реализаций - LINQ-to-SQL, как и ADO.NET Data Services, Entity Framework LINQ-to-Entities, 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:

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

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

9 голосов
/ 15 мая 2009

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

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.

4 голосов
/ 15 мая 2009

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

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

1 голос
/ 15 мая 2009

Воу воу. Помедленнее.

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

Более длинный ответ:

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

Линк, согласно MS,

LINQ - это набор расширений для .NET Рамки, которые охватывают интегрированный с языком запрос, набор и трансформировать операции. Расширяет C # и Visual Basic с родным языком синтаксис для запросов и обеспечивает класс библиотеки, чтобы воспользоваться этими Возможности.

от: http://msdn.microsoft.com/en-us/netframework/aa904594.aspx

Как в LINQ to SQL, так и в Entity Framework есть провайдеры Linq, которые допускают использование этого удивительного синтаксиса при выполнении запросов к ним.

1 голос
/ 15 мая 2009

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

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

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

0 голосов
/ 05 декабря 2009

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

0 голосов
/ 15 мая 2009

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

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

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

Удачи.

0 голосов
/ 15 мая 2009

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

...