Він не мертвий, але 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, набагато менше накладних витрат на отримання цього проекту та його виконання.