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 для SQL?

Поза майбутнім LINQ to SQL, чи не є це загалом поганим сигналом? Враховуючи швидкість, з якою МС кидає біти об стінку, чи раціонально використовувати будь-який з нових бітів раніше? (і це ласкаво, для 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 до SQL, але ми будемо повністю ігнорувати його через EF"
Джон Лімджап,

Джон - Я так це читаю. В оголошенні сказано, "... Entity Framework буде нашим рекомендованим рішенням щодо доступу до даних для LINQ до реляційних сценаріїв". Це означає «до побачення», LINQ - SQL.
rp.

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. Іншими словами, версія 2 L2S щойно була "перемаркірована" EF.

3) LINQ як такий (Мовний інтегрований запит) - найкраща річ із нарізаного морозива, і його можна використовувати з багатьма іншими речами, крім 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 від Роджера Дженнінгса від грудня 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 для SQL як свій ORM на вибір. Очевидно, вони вирішили, що переваги переважають небезпеку.
Роберт Харві,

Це все-таки правда? Я чув, що StackOverflow відійшов від L2S, але, здається, не може знайти цю інформацію.
Аарон,

2
@Aaron, так, вони використовують рукописний SQL із власною мікро-ORM під назвою Dapper. Вони все ще можуть використовувати LINQ-to-SQL у менш популярних розділах сайту.
CMircea

28

У вашому питанні є неоднозначність, яку потрібно вирішити.

LINQ! = LINQ до SQL

Існує ціла купа технологій та постачальників LINQ:

  • Посилання на SQL;
  • Linq до юридичних осіб;
  • Linq to Objects;
  • Посилання на XML;

... і це лише ті, що від Microsoft. Є також постачальники послуг, що не входять до складу MS, включаючи NHibernate.

Допис у блозі, який ви пов’язали, говорить лише про Linq та SQL.

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

Враховуючи це, я б припустив, що будь-яка сприйнята відсутність майбутнього для "Linq To SQL" є неактуальною, оскільки навички, які ви отримаєте при написанні запитів LINQ, у майбутньому будуть передані іншим інструментам.


Синтаксис LINQ 2 SQL досить схожий на Entity Framework, щоб ви могли досить легко переходити між ними.
Джейсон Шорт

Однак його запитання залишається актуальним, оскільки реальна реалізація LINQ для SQL має певні переваги, що працюють проти SQL Server.
Tor Haugen

21

Ми не вбиваємо LINQ до SQL. Ми оптимізуємо для EF, але LINQ to SQL точно не знищується :)

- Скотт / Microsoft.


Лол. це мене розтріскує. вам потрібно було отримати схвалення від Microsoft, щоб зробити цю публічну заяву? : p
Каньйон

а? у 2009 році це було повідомлення, яке заплутала команда, тому мені довелося це виправити ... як менеджер з продуктів .net: D
Скотт Барнс

13

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

До C # 3.0 вони включають:

  • Методи розширення (статичні методи з цим ключовим словом для першого параметра)
  • Виведені типи компілятора (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 to [insert Third Party ORM] тут забезпечує цілком здорову екосистему методологій рівня доступу до даних, яку може вибрати розробник програмного забезпечення. Сторонні постачальники, такі як NHibernate, LLBLGen і навіть Subsonic (не впевнені, чи збираються вони пропонувати постачальників LINQ), безумовно, зроблять конкуренцію кращою та цікавішою.

З огляду на це, для Microsoft буде абсолютно сумно відмовлятися від LINQ до SQL, тим більше, що він має хороші послідовники - навіть StackOverflow побудований на ньому.


6

Цікава публікація в блозі про це. І деяка пов’язана інформація про дописи Stackoverflow .

Основною суттю, здається, є коментарі, зроблені в блозі 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 постачальнику SQL - для нього немає моделі. Це була одноразова технологія, не розширювана.

Entity Framework - це ЄДИНИЙ спосіб від Microsoft створити постачальника LINQ. Entity Framework виявився досить суперечливим, але я думаю, що це частково пов’язано з тим, що LINQ to SQL сьогодні має кращий досвід програміста. Entity Framework схопить і перевершить LINQ для SQL, оскільки це інструмент ORM / Mapping майбутнього від Microsoft.

РЕДАГУВАТИ - Я щойно трохи детальніше написав про це у своєму блозі

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


1
Re .: "Ви не можете написати LINQ постачальнику 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, який можна завантажити, що може вам виявитися корисним.
Крістофер,

Неважливо, чи можете ви це зламати - це офіційно НЕ підтримується державою-членом. Ви не маєте для цього інтеграції VSIP. Ви не можете отримати логотип для свого додатка ...
Джейсон Шорт

5

Я думаю, я насправді не бачу проблеми тут. Зі статті, на яку ви зв’язали:

Ми слухаємо клієнтів щодо LINQ to SQL і будемо продовжувати вдосконалювати продукт на основі відгуків, які ми отримуємо від спільноти.

Я щось пропускаю? Що створює враження, що LINQ для SQL мертвий після прибуття?



4

Хтось пам’ятає VB6? Незалежно від того, чи вам це подобається особисто, Microsoft продала мільйони копій, а компанії витратили мільйони доларів, написавши мільйони рядків VB6. Що сталося далі?

Тож просто розгляньте цей урок. Мені здається, підтримка LinqToSQL буде досить неприємною. Вони зобов'язані підтримувати його, оскільки він знаходиться в поточній платформі .NET. Але чи буде це в .NET 5, 6, 7 ...? Просто подумайте, наскільки це для вас важливо (наскільки я знаю, це для вас зовсім не важливо).


для мене найкращим є чистий ado.net з OracleConnection та SqlConnection, оскільки ці провайдери та System.Data.DataSet ніколи не вмирають. Є базою табличних даних. Особисто мені подобається EF, але професійний набір даних і надалі залишається стандартом.
pedrofernandes

3

Можливо, вам не слід турбуватись вивченням Linq для SQL, але все ще існують сутності Linq, які вони будуть зберігати.


1
Нинішній підхід до ЕФ має кілька серйозних проблем, не в останню чергу примусовий базовий клас. Я би очікував, що EFvNext буде виглядати по-різному місцями; до цього часу я б рекомендував використовувати найпростіший варіант: L2S - або nHibernate ;-p
Марк Гравелл

1
Опанувавшись LINQ, я б припустив, що "вивчення" LINQ на SQL досить тривіальне. Це просто випадок додавання LINQ до елемента класів SQL до вашого проекту та перетягування декількох таблиць на конструктор.
Річард Ев,


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, нехай це буде дуже груба версія v1, у 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.