LINQ to SQL мертв или жив?
Просто когда я подружился с LINQ to SQL, кажется, что MS вытаскивает коврик из-под него.
Из моего небольшого исследования, 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
16 ответов
1) Они не могут "убить" Linq-to-SQL, поскольку он уже является частью.net framework. То, что они могут сделать, это прекратить добавлять функции к нему. Это не мешает тысячам разработчиков, которые уже используют L2S, расширять и улучшать его. Некоторые основные области довольно сложны для восприятия, но они уже прочны, и недостающие конструктивные особенности можно легко закрепить.
2) Одно из сеансов PDC EF показало, что они выучили пару уроков из фиаско EFv1, и теперь они копируют и вставляют много вкусностей из L2S в EF и делают вид, что это новый материал EF. Другими словами, вторая версия L2S была только что "перемаркирована" EF.
3) LINQ как таковой (Language Integrated Query) - это лучшее, что есть нарезанное мороженое, и его можно использовать с множеством других вещей, кроме L2S (Linq для объектов, Linq для объектов, Linq для XML, Linq-для чего угодно).). Таким образом, попытка группы 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 не умер. Я могу заверить вас, он не мертв. Ничто никогда не исчезнет. Мы никогда этого не делали и никогда не будем".
В вашем вопросе есть неясность, которую нужно решить.
LINQ! = LINQ to SQL
Существует целый ряд технологий и поставщиков LINQ:
- Linq to SQL;
- Linq to Entities;
- Линк к объектам;
- Linq to XML;
... и это только Microsoft. Также есть провайдеры не MS, включая NHibernate.
Сообщение в блоге, на которое вы ссылаетесь, говорит только о Linq to SQL.
Основное преимущество LINQ заключается в том, что вы можете изучать и использовать один синтаксис запроса и повторно использовать его в нескольких технологиях.
Учитывая это, я бы предположил, что любое предполагаемое отсутствие будущего для "Linq To SQL" не имеет значения, так как навыки, которые вы приобретете при написании запросов LINQ, будут передаваться другим инструментам в будущем.
Мы не убиваем LINQ to SQL. Мы оптимизируем для EF, но LINQ to SQL определенно не убивается:)
- Скотт / Microsoft.
Вы должны не только изучать Linq (System.Linq.Enumerable и System.Linq.Queryable), но и изучать усовершенствования языка программирования для своего языка.net.
В C# 3.0 они включают в себя:
- Методы расширения (статические методы с ключевым словом this в первом параметре)
- Компилятор выводит типы (var)
- Лямбда-синтаксис (который генерирует анонимный метод или выражение в зависимости от контекста)
- Инициализаторы
- Реализация свойства по умолчанию (сокращение)
Узнайте больше здесь.
В VB 9.0 есть некоторая встроенная магия XML и многое другое (многие похожи на приведенный выше список для C#).
Узнайте больше здесь.
Я, честно говоря, не понимаю, где в этой статье вы читали, что link2sql мертв.
В сообщении в блоге, на которое вы ссылаетесь, написано:
Мы прислушиваемся к клиентам, касающимся LINQ to SQL, и будем продолжать развивать продукт на основе отзывов, которые мы также получаем от сообщества.
Для меня это читается как LINQ to SQL, который будет разработан и поддерживается в будущем. Интересно, почему вы думаете, что он мертв?
Конечно, я думаю, что выбор между LINQ to SQL, LINQ to Entities и LINQ для [вставки стороннего ORM] обеспечивает совершенно здоровую экосистему методологий уровня доступа к данным, из которых может выбирать разработчик программного обеспечения. Сторонние провайдеры, такие как NHibernate, LLBLGen и даже Subsonic (не уверены, собираются ли они предлагать LINQ провайдеров), определенно сделают конкуренцию лучше и интереснее.
При этом для Microsoft будет очень грустно отказаться от LINQ to SQL, тем более что у него есть хорошие последователи - даже Stackru построен на нем.
Интересная запись в блоге об этом. И некоторая связанная информация на сообщениях Stackru.
Основная суть, по-видимому, в комментариях, сделанных в блоге ado.net, в которых говорится, что Entity Framework - единственное, что получает основное время для разработчиков для Visual Studio 2010 и Dot Net 4.
Мой ответ - DUH. Мы все это знали. 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.
Думаю, я не вижу здесь проблемы. Из статьи вы связали:
Мы прислушиваемся к клиентам, касающимся LINQ to SQL, и будем продолжать развивать продукт на основе отзывов, которые мы также получаем от сообщества.
Я что-то пропустил? Что создает впечатление, что LINQ to SQL не работает по прибытии?
Кто-нибудь помнит VB6? Неважно, нравится ли вам это лично или нет, Microsoft продала миллионы копий, а компании потратили миллионы долларов на написание миллионов строк VB6. Что произошло дальше?
- Ну, Microsoft все еще поддерживает VB6 (вроде - не IDE).
- И Microsoft до сих пор говорит, что они слушают клиентов VB6 даже сейчас ( в сентябре 09).
- Но довольны ли клиенты VB6? Не с 2002 года, 4 года после запуска VB6.
- Почему бы и нет? Пути обновления для ваших инвестиций в код для замены технологии, VB.Net, стоят дорого.
Так что просто подумайте об этом уроке. Мне кажется, поддержка LinqToSQL будет довольно неохотной. Они обязаны поддерживать это, потому что это находится в текущей платформе.NET. Но будет ли это в.NET 5, 6, 7...? Подумайте, насколько это важно для вас (насколько я знаю, для вас это вообще не имеет значения).
Скотт Гатри сказал мне, что они не убьют LINQ to SQL:
Возможно, вам не стоит изучать Linq для SQL, но есть все еще сущности Linq, которые они сохранят.
Очевидно, что 2 ORM - это один ко многим в наборе инструментов Microsoft, но мне кажется, что неправильная структура была выбрана по всем неправильным причинам. Тот факт, что команда C# выполнила работу, которую команда ADO.NET должна была выполнить за гораздо более короткое время и справилась с работой, сложно проглотить команде ado.net. Не то, чтобы я знал внутреннюю работу этих двух фреймворков, но я думаю, что было бы намного быстрее обновить недостатки, которые linq2sql имеет в структуре сущностей.
Кажется, здесь слишком много политики, и я думаю, что это действительно повредит репутации asp.net, так как я не верю в то, что среда Entity даст нам такой же удобный интерфейс, как и Linq2sql. Команда ado.net также может получить некоторые навыки общения от команды asp.net mvc, поскольку разъяснения по этой проблеме в лучшем случае расплывчаты.
Было бы интересно узнать, что Скотт Гу и его команда MVC стоят здесь, так как большинство их примеров используют Linq2Sql.
Смотрите также http://ayende.com/Blog/archive/2008/10/31/microsoft-kills-linq-to-sql.aspx и комментарии там
(нет, StingyJack, LINQ to SQL не использует структуру сущностей)
Во всяком случае, я бы не волновался. Тим заявляет, что они слушают клиентов по поводу LINQ to SQL. Судя по энтузиазму L2S, клиенты (это мы) выскажут свое мнение.
И, как указывает КристоферА, они не могут "убить" L2S, только заморозить его. И L2S, после полировки, на самом деле не требует дальнейшего развития. При наличии поставщика L2S любые достижения в LINQ должны быть доступны и в L2S. Так что выбор все равно будет за нами.
Всегда было немного странно, что с Linq 2 Sql и Entity Framework были большие области перекрытия. Я думаю, что единственная причина, по которой L2S попал только в выпуск.NET 3.5, заключалась в том, что было большое сомнение, что EF когда-нибудь увидит свет. Теперь, когда EF1 отсутствует, все это будет очень грубый v1, больше не было необходимости в L2S.
Следующая версия Windows Phone 7 под кодовым именем Mango включает SQL Server Compact Edition, доступный через Linq to SQL http://jesseliberty.com/2011/05/10/coming-in-mangosql-server-ce/