LINQ to SQL Dead или Alive?

Когда я подружился с LINQ to SQL, кажется, что MS вытаскивает из него коврик.

http://blogs.msdn.com/adonet/archive/2008/10/29/update-on-linq-to-sql-and-linq-to-entities-roadmap.aspx

Из моего небольшого исследования, EF - это излишество для простой работы. Но после этого объявления есть смысл продолжать использовать LINQ to SQL?

Помимо будущего для LINQ to SQL, разве это вообще не посылает плохой сигнал? Учитывая скорость, с которой MS бросает бит против стены, разумно ли использовать какой-либо из новых бит раньше? (и что, будучи добрым, это вряд ли рано для LINQ to SQL!).

Для моей работы с LINQ to SQL, я думаю, что я направляюсь в SubSonic!

Обновление: пара новых мнений:

http://ayende.com/Blog/archive/2008/10/31/microsoft-kills-linq-to-sql.aspx

http://codebetter.com/blogs/david.hayden/archive/2008/10/31/linq-to-sql-is-dead-read-between-the-lines.aspx

Ответ 1

1) Они не могут "убить" Linq-to-SQL, поскольку он уже является частью структуры .net. То, что они могут сделать, это прекратить добавлять к нему функции. Это не мешает тысячам разработчиков, которые уже используют L2S для расширения и улучшения. Некоторые основные области сложно трогать, но они уже прочны, и функции отсутствующие конструкторы можно легко закрепить на.

2) Один из сеансов PDC EF показывает, что они изучили пару уроков из фиаско EFv1, и теперь они копируют и -распространяя много лакомств от L2S в EF и притворяясь, что это новый материал EF. Другими словами, L2S версия 2 только что была "перемаркирована" EF.

3) LINQ как таковой (Language Integrated Query) - лучшая вещь, так как нарезанное мороженое и его можно использовать с множеством других вещей, кроме L2S (Linq для объектов, Linq для объектов, Linq to XML, Linq- к чему). Таким образом, группа DP пытается заставить [огромные массы] усыновителей L2S к [менее популярной и в настоящее время испорченной] Entity Framework не является основанием не изучать Linq.

Также см. эту ветку (что, по моему мнению, частично вызвало сообщение в блоге Tim): http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=4061922&SiteID=1

Обновление 1: В выпуске журнала 2008 года, посвященной журналу Visual Studio, Роджер Дженнингс хорошо читает эту тему, с некоторыми сравнениями L2S и EF: <а3 >

Обновление 2:. Андерс Хейлсберг цитировался в Redmond Developer News: "LINQ to SQL не мертв. Я могу заверить вас, что это не мертво. Ничто никогда не исчезает. Мы никогда этого не делали, и мы никогда этого не сделаем".

http://reddevnews.com/blogs/weblog.aspx?blog=3016

Ответ 2

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

LINQ!= LINQ to SQL

Существует целая группа технологий и поставщиков LINQ:

  • Linq to SQL;
  • Linq to Entities;
  • Linq to Objects;
  • Linq to XML;

... и это только те из Microsoft. Есть и поставщики, не являющиеся MS, включая NHibernate.

Сообщение в блоге, которое вы связывали, связано только с Linq to SQL.

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

Учитывая это, я бы предположил, что любое воспринимаемое отсутствие будущего для "Linq To SQL" не имеет значения, так как навыки, которые вы получаете при написании запросов LINQ, будут передаваться другим инструментам в будущем.

Ответ 3

Мы не убиваем LINQ to SQL. Мы оптимизируем для EF, но LINQ to SQL определенно не убивают:)

- Скотт/Microsoft.

Ответ 4

Не только вы должны изучить Linq (System.Linq.Enumerable и System.Linq.Queryable), вам нужно будет изучить улучшения языка программирования для вашего языка .net.

В С# 3.0 они включают:

  • Методы расширения (статические методы с этим ключевым словом по первому параметру)
  • Компилятор выводит типы (var)
  • Синтаксис Lambda (который генерирует анонимный метод или выражение в зависимости от контекста)
  • Инициализаторы
  • Стандартная реализация по умолчанию (сокращенная версия)

Подробнее здесь.


В VB 9.0 есть некоторая встроенная XML-магия и многое другое (многие аналогичны приведенному выше списку для С#).

Подробнее здесь.

Ответ 5

Я честно не понимаю, где в этой статье вы читаете, что link2sql мертв.

В сообщении в блоге, которое вы связали с ним, говорится:

Мы слушаем клиентов относительно LINQ to SQL и будем продолжать развивать продукт на основе отзывов, которые мы также получаем от сообщества.

Для меня это читается, так как LINQ to SQL будет развиваться и поддерживаться в будущем. Интересно, почему вы думаете, что он мертв?

Ответ 6

Конечно, я считаю, что выбор между LINQ to SQL, LINQ to Entities и LINQ для [вставки сторонней ORM] здесь дает совершенно здоровую экосистемную методологию уровня доступа к данным, которую может выбрать разработчик программного обеспечения. Сторонние поставщики, такие как NHibernate, LLBLGen и даже Subsonic (не уверены, будут ли они предлагать провайдеры LINQ), определенно сделают конкуренцию лучше и интереснее.

Если Microsoft откажется от LINQ to SQL, это будет совершенно печально, тем более, что у него есть хорошие возможности - даже StackOverflow построен на нем.

Ответ 7

Интересное сообщение в блоге об этом. И некоторая связанная информация о Stackoverflow posts.

Основной смысл заключается в комментариях, сделанных в блоге ado.net, в котором говорится, что Entity Framework - это единственное, что получает основное время разработчика для Visual Studio 2010 и Dot Net 4.

Мой ответ - DUH. Мы все это знаем. Microsoft публично заявила в PDC 2007, что LINQ to SQL является краткосрочной версией для SQL Server, потому что в SQL Server не было другой истории LINQ. Он работает только с SQL Server. Вы не можете написать провайдера LINQ to SQL - для него нет модели. Это была одна технология, а не расширяемая.

Entity Framework - это единственный способ от Microsoft создать LINQ Provider. Структура Entity Framework оказалась довольно противоречивой, но я думаю, что отчасти это связано с тем, что LINQ to SQL имеет лучший опыт работы с программистами. Entity Framework поймает и превзойдет LINQ to SQL, потому что это инструмент ORM/Mapping будущего от Microsoft.

РЕДАКТИРОВАТЬ - я просто немного подробнее написал об этом на мой блог

EDIT2 - IQueryable Provider - не то же самое, что и поставщик LINQ to SQL. Вы можете написать свой собственный провайдер IQueryable для всего, что вам нравится. Вы не получаете поддержки дизайнеров или модели. Нет модели дизайнера gui, которую я знаю для привязки к генерации модели LINQ to SQL.

Ответ 8

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

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

Я что-то упустил? Что создает впечатление, что LINQ to SQL мертв по прибытии?

Ответ 10

Кто-нибудь помнит VB6? Независимо от того, ненавидите ли вы его или любите, Microsoft продала миллионы копий, а компании потратили миллионы долларов, пишу миллионы строк VB6. Что произошло дальше?

Так что просто рассмотрите этот урок. Для меня, похоже, поддержка LinqToSQL будет довольно неохотой. Они обязаны поддерживать его, потому что он находится в текущей платформе .NET. Но будет ли это в .NET 5, 6, 7...? Подумайте, насколько это важно для вас (насколько я знаю, для вас это совсем не важно).

Ответ 11

Может быть, вам не стоит беспокоиться о том, как LINQ to SQL, но все еще существуют объекты Linq, которые они сохранят.

Ответ 13

Очевидно, что 2 ORM - один для многих в наборе инструментов Microsoft, но для меня это неправильная структура была выбрана по всем неправильным причинам. Тот факт, что команда С# выполнила задание, которое команда ADO.NET должна была сделать в течение более короткого времени, и сделала работу лучше, чем усвоить для команды ado.net. Не то, чтобы я знал внутреннюю работу двух фреймворков, но я думаю, что было бы намного быстрее обновить недостатки, которые linq2sql имеет для структуры сущности.

Похоже, что слишком много политики, и я думаю, что это действительно повредит репутации asp.net, так как я не верю в то, что инфраструктура Entity предоставит нам такой же удобный интерфейс, как Linq2sql. Команда ado.net могла также изучить некоторые навыки общения от команды asp.net mvc, поскольку разъяснения по проблеме в лучшем случае расплывчаты.

Было бы интересно узнать, что здесь стоит Скотт Гу и его команда MVC, так как большинство их примеров используют Linq2Sql.

Ответ 14

Было всегда немного странно, что с Linq 2 Sql и Entity Framework были большие области перекрытия. Я думаю, что единственная причина, по которой L2S только когда-либо попала в выпуск .NET 3.5, заключалась в том, что было большое сомнение в том, что EF когда-нибудь увидит свет дня. Теперь, когда EF1 отсутствует, все это будет очень грубым v1, больше не нужно L2S.

Ответ 15

(нет, StingyJack, LINQ to SQL не использует инфраструктуру сущности)

В любом случае, я не стал бы волноваться. Тим заявляет, что они слушают клиентов относительно LINQ to SQL. Судя по энтузиазму, который я видел для L2S, клиенты (то, что мы) будут говорить о них.

И, как указывает Кристофер, они не могут "убить" L2S, а только заморозить его. И L2S, когда-то отполированный, на самом деле не нуждается в значительно дальнейшей разработке. При наличии поставщика L2S любые достижения в LINQ должны быть доступны и в L2S. Таким образом, выбор по-прежнему будет нашим.