Чи LINQ для SQL мертвий?


17

Чи є якась причина продовжувати використовувати Linq для SQL, чи краще перейти до таких методів ORM, як EF, NHibernate тощо.

Ми використовуємо Linq до SQL у новому великому корпоративному додатку, який існуватиме довгий час. Мотивація цього нового корпоративного додатку полягає в тому, що програма звичайно написана на Visual Basic і оскільки Microsoft припинила підтримку, яку ми змусили переписати додаток. Здається, ми вже є, але на цей раз з нашим DAL (шаром доступу до даних).

Я вже читав цю статтю , але вона порівнюється лише зі слабкістю EF.


+1 великий Q. Це для мене захоплююче, я займався перенесенням своїх збережених процедур і параметризованими рядками запитів SQL в LINQ в SQL для поліпшення читабельності, я не мав уявлення, що він більше не розробляється.
fearoffours

У MS є невеликий .NET 4 слайд-шоу, який сказав, що він не мертвий - але це може означати багато речей. Вони покращили його у .NET 4.0: damieng.com/blog/2009/06/01/linq-to-sql-changes-in-net-40
MetalMikester

Тільки не знову. Це питання було обговорено ad-nauseum на StackOverflow. Ви можете сказати FUD?
Роберт Харві

Відповіді:


11

Якщо ви вже користуєтесь ним і не стикаєтесь із жодними труднощами, я б дотримувався цього в існуючих проектах.

Linq2SQL є досить приємним, але обмеженим, ORM - якщо ви хочете скласти карту ваших об'єктів більш складними способами, ніж основні, що надаються Linq2SQL, то ви збираєтеся застрягти. Microsoft виправила кілька помилок, коли вони вийшли з .net 4, але заявили, що не збираються витрачати ресурси на її розширення.

Я б сказав, якщо у вас досить простий проект, який, можливо, має обмежений термін експлуатації, то Linq2SQL - це гідний легкий вибір, якщо ви обережні, щоб не просочуватися залежностями до Linq2SQL повсюдно. Для нічого більшого я б пішов з чимось іншим (наприклад, NHibernate або EF), оскільки Linq2SQL - це майже безвихідь.


Я можу тільки погодитись, не дуже мертвий, але це на столі в тріаді якимось чином. Якщо робота працює, і зараз це змінить величезний вплив ... ну, ви можете хотіти трохи відпочити і шукати хорошого часу, щоб перетворити конверсію на EF / NHibernate, це може бути фінансованим проектом оновлення (врешті-решт ми всі хочуть роботу, хліб і масло на столі).
закарбовано

@cyberzed: Це звучить як хороший привід для зайвої роботи.
Роберт Харві

12

Він не мертвий, але Microsoft зараз зосереджена на Entity Framework.

Я використовував LINQ для SQL в невеликих проектах, і це дуже приємно як легкий рівень даних, і я б розглядав можливість використовувати його знову для подібних проектів. Сама реалізація LINQ справді хороша і до недавнього часу набагато краща, ніж проект LINQ NHibernate. Що стосується більшого проекту, в якому я використовував L2S, мені було важко придумати шаблон роботи, який був мені задоволений, через обмеження класу L2S "DataContext". Спроба реалізувати щось подібне до "Сеанс на запит" за допомогою L2S видається дуже важким або неможливим.

Я також не дуже розглядаю L2S як справжній ORM, оскільки він дійсно не дає вам багато варіантів картографування. Дизайн вашого класу дійсно повинен відповідати схемі вашої бази даних (таблиця за класом), інакше вона буде боротися з вами на кожному кроці шляху. Ще одна річ, яка мені не подобається в L2S, - це необхідність використовувати конкретні типи ( EntitySetі EntityRef) для обробки колекцій, посилань та ледачих завантажень. Це означає, що неможливо зберегти доменну модель ORM агностиком без додавання іншого шару абстракції.

Моя інша проблема з L2S - це виключна залежність від LINQ для генерування запитів. Постачальник LINQ дуже добре написаний і, як правило, створює пристойний SQL для більшості запитів, але я сумніваюся, що є більш складні запити, які не можуть бути добре виражені з LINQ. Використовуючи L2S, в основному ви повинні повернутися до виклику збережених процедур у цих випадках, тоді як (наприклад, NHibernate має декілька API (постачальник LINQ, QueryOver, HQL тощо), які можна використовувати, коли ви хочете більше контролювати створений SQL.

На захист L2S над NHibernate, набагато менше накладних витрат на отримання цього проекту та його виконання.


2

Він не мертвий, як це все ще працює, але якщо він не розвивається далі, то може бути сенс перейти до чогось іншого.

Однак якщо це працює для вашої програми, немає сенсу міняти заради зміни.


2

стабільніше, ніж мертвий імхо:

http://www.thinqlinq.com/default/LINQ-to-SQL-enhancements-for-2010.aspx

http://jonkruger.com/blog/2009/06/06/linq-to-sql-is-not-dead/

Вони спрямовували свої зусилля на вдосконалення до Entity Framework, де це дійсно потрібно для досягнення успіху цього продукту. Не чекайте нічого нового, крім сумісності та виправлення помилок на linq2sql на деякий час.

Цей сайт працює з цілою кількістю linq2sql, якщо я не помиляюся.


+1 для "стабільного" Найкращий спосіб перегляду L2S, imho. Стабільний і більше не розширюється / змінюється.
квентін-зірин

Вибачте, але "нічого нового, крім сумісності та виправлення помилок" означає його утримання. Це, в основному, гарантія того, що громада відійде від неї, ви не побачите багато нових проектів, використовуючи її, і тому, ймовірно, не хочете використовувати її і в нових проектах. "Мертвий" не означає, що він не працює, це просто означає, що мало інновацій чи інтересів.
Джеремі

З точки зору великих підприємств, той факт, що ядро ​​більше не змінюється, означає, що він може в багатьох випадках перейти до списку затверджених методик. В моєму напрямку роботи ми чекали цього вже деякий час. EF все ще нестабільний, щоб вскочити ще, і L2S завжди буде викликати інтерес у ситуаціях, коли накладні витрати EF не потрібні.
Білл

@Jeremy Чи люди все ще використовують TeX?
альтернатива

1

Це дивно, але я багато бачив цього фразування ("LINQ2SQL мертвий"), і я не впевнений, звідки це походить з *. Це так само, як і мертвий Windows XP. Microsoft припинила підтримку і створила щось нове (і, на мої очі, краще), але люди все ще вільні користуватися XP так само, як вони можуть безкоштовно використовувати Linq2SQL. Справді, я використовую Linq2SQL під час створення спеціальних модулів DotNetNuke. Однак з новими можливостями EF4, такими як розробка коду ( http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx ) важко знайти причини дотримуватися Linq2SQL. Я не бачу причин переглядати і оновлювати код, але для нового коду я не знаю, чому ви не хочете використовувати EF4.

* Чесно кажучи, я дуже… нав’язливий щодо семантики! Прошу вибачення, якщо це дратує оточуючих :)

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