LINQ to SQL жив или мертв?

95

Когда я подружился с 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

рп.
источник
В этом объявлении ничего не говорилось о прекращении использования LINQ или LINQ to SQL ...?
Codewerks,
5
@AugustLights Я думаю, что в объявлении говорится, что «мы не будем удалять LINQ to SQL, но мы собираемся полностью игнорировать его через EF»
Джон Лимджап
Джон - Я так прочитал. В объявлении говорилось: «... Entity Framework будет нашим рекомендуемым решением для доступа к данным для LINQ в реляционных сценариях». Это значит до свидания, LINQ to SQL.
рп.
4
MFC не умер, просто это не лучшее решение. Вы все еще кодируете MFC? VB6 все еще поддерживается, вы это кодируете? Так было всегда, MS делает то, что хочет, а не то, что вы хотите.
gbjbaanb
1
@rp: Что вы имели в виду под DOA - Dead or Aliveили Dead on arrival?
Абатищев

Ответы:

64

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

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

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

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

Обновление 1: выпуск журнала Visual Studio Magazine за декабрь 2008 г., подготовленный Роджером Дженнингсом, является хорошим чтением по этой теме с некоторыми сравнениями L2S и EF: http://visualstudiomagazine.com/features/article.aspx?editorialsid=2583

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

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

КристоферА
источник
14
Создатели StackOverflow приняли Linq to SQL в качестве предпочтительной ORM. По-видимому, они решили, что преимущества перевешивают опасности.
Роберт Харви,
Это все еще правда? Я слышал, что StackOverflow отказался от L2S, но не могу найти эту информацию.
Аарон
2
@Aaron, да, они используют рукописный SQL со своим собственным микро-ORM под названием Dapper. Они могут по-прежнему использовать LINQ-to-SQL в менее популярных разделах сайта.
CMircea
28

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

LINQ! = LINQ to SQL

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

  • Linq to SQL;
  • Linq для сущностей;
  • Linq к объектам;
  • Linq в XML;

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

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

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

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

Беван
источник
Синтаксис LINQ 2 SQL достаточно похож на Entity Framework, поэтому вы можете легко переходить между ними.
Джейсон Шорт,
Однако его вопрос по-прежнему актуален, поскольку фактическая реализация LINQ to SQL имеет некоторые конкретные преимущества по сравнению с SQL Server.
Tor Haugen
21

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

- Скотт / Microsoft.

Скотт Барнс
источник
Ржунимагу. это меня бесит. Вам нужно было получить одобрение Microsoft, чтобы сделать это публичное заявление? : p
Каньон Колоб
а? в 2009 году это было сообщение, о котором идет речь, поэтому я должен был исправить это ... как менеджер по продукту .net: D
Скотт Барнс
13

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

В C # 3.0 к ним относятся:

  • Методы расширения (статические методы с ключевым словом this в первом параметре)
  • Типы, выведенные компилятором (var)
  • Лямбда-синтаксис (который генерирует анонимный метод или выражение в зависимости от контекста)
  • Инициализаторы
  • Реализация свойства по умолчанию (сокращение)

Подробнее читайте здесь .


В VB 9.0 есть некоторая встроенная магия XML и многое другое (многие из них похожи на приведенный выше список для C #).

Подробнее читайте здесь .

Эми Б
источник
Вау, должно быть, у меня был действительно буквальный день. Только с действительно строгой интерпретацией предложения, которое является вопросом, вне контекста, мой ответ вообще имеет смысл.
Amy B
@David B, да .. Я подумал, это нормальный ответ, я просто не понимаю, как он отвечает на этот вопрос. lol
mmcdole
1
Он продолжает получать положительные голоса. Думаю, некоторым людям просто нужно увидеть информацию в ссылках ... Если вам понравился этот ответ, вам может понравиться мой лучший ответ здесь: stackoverflow.com/questions/471502/what-is-linq/471592#471592
Эми B
8

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

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

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

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

Сэм
источник
7

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

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

Джон Лимджап
источник
6

Интересный пост в блоге об этом. И некоторая сопутствующая информация о сообщениях Stackoverflow .

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

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

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

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

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

Джейсон Шорт
источник
1
На вопрос: «Вы не можете написать поставщика LINQ to SQL - для него нет модели». Ну, там есть . Просто они решили сделать необходимых участников закрытыми в последнюю минуту, чтобы дать EF преимущество. См. Blogs.msdn.com/mattwar/archive/2007/05/31/…
KristoferA
1
Извините, предыдущая ссылка должна была быть blogs.msdn.com/mattwar/archive/2008/05/04/…
KristoferA
Спасибо - не читал этот пост. Я знал, что внутри есть API, но не знал, было ли это когда-либо опубликовано.
Джейсон Шорт,
1
В том же блоге ( blogs.msdn.com/mattwar ) также есть полные серии статей (с примерами) о том, как писать провайдеров, а также подключаемый загружаемый провайдер L2S, который может оказаться полезным.
KristoferA
Неважно, сможете ли вы его взломать - он официально НЕ поддерживается MS. У вас НЕТ интеграции VSIP для этого. Вы не можете получить логотип для своего приложения ...
Джейсон Шорт,
5

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

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

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

Габриэль Изенберг
источник
4

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

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

MarkJ
источник
для меня лучший - это чистый ado.net с OracleConnection и SqlConnection, потому что эти поставщики и System.Data.DataSet никогда не умирают. База табличных данных. Personal Мне нравится EF, но профессиональный DataSet остается стандартом.
pedrofernandes
3

Возможно, вам не стоит утруждать себя изучением Linq to SQL, но есть еще Entities Linq, которые они сохранят.

Корро
источник
1
Текущий подход EF имеет некоторые серьезные проблемы, в том числе принудительный базовый класс. Я ожидал, что EFvNext местами будет выглядеть совсем иначе; до тех пор я бы порекомендовал использовать самый простой вариант: L2S - или nHibernate ;-p
Marc Gravell
1
После того, как вы разберетесь с LINQ, я бы предположил, что «изучение» LINQ to SQL довольно тривиально. Это просто случай добавления элемента классов LINQ to SQL в ваш проект и перетаскивания нескольких таблиц в конструктор.
Ричард Ev
3

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

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

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

терджетил
источник
2

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

Крейг
источник
2

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

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

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

Тор Хауген
источник
Что ж, они могут убить его, не включив его в Dot Net 4, который должен быть параллельной установкой. Это означало бы, что приложения dot net 4 не имели бы к нему доступа без установки 3.5SP1 на том же компьютере - не знаю, правда это или нет.
Джейсон Шорт,
Кто-нибудь помнит VB6? Microsoft все еще поддерживает VB6 (вроде). Они до сих пор говорят, что слушают клиентов VB6 даже сейчас. Но счастливы ли мы? Нет. Пути обновления для перевода нашего кода на замену технологии VB.Net дороги. Так что просто примите во внимание этот урок: и подумайте, будет ли LinqToSQL в .NET 4, 5, 6 ... и насколько это важно для вас.
MarkJ