Есть ли причина продолжать использовать Linq для SQL, или лучше перейти на методы ORM, такие как EF, NHibernate и т. Д.
Мы используем Linq to SQL в новом крупном корпоративном приложении, которое будет существовать долгое время. Мотивация для этого нового корпоративного приложения состоит в том, что приложение было написано на Visual Basic, и поскольку Microsoft прекратила поддержку, мы были вынуждены переписать приложение. Кажется, что мы уже там, но на этот раз с нашим DAL (Уровень доступа к данным).
Я уже читал эту статью , но она сравнится только со слабостью EF.
database-development
Амир Резаи
источник
источник
Ответы:
Если вы уже используете его и не столкнетесь с какими-либо трудностями, я бы остановился на существующих проектах.
Linq2SQL - это довольно приятный, но ограниченный ORM - если вы хотите отобразить ваши объекты более сложными способами, чем базовые, предоставляемые Linq2SQL, то вы застрянете. Microsoft действительно исправила несколько ошибок, когда вышла с .net 4, но заявила, что не собирается выделять ресурсы на ее расширение.
Я бы сказал, что если у вас довольно простой проект, который может иметь ограниченный срок службы, то Linq2SQL - это неплохой легкий вариант, если вы будете осторожны, чтобы не повредить зависимости от Linq2SQL повсюду. Для чего-то большего я бы пошел с чем-то другим (например, с NHibernate или EF), поскольку Linq2SQL в значительной степени является тупиком.
источник
Он не умер, но Microsoft сейчас сосредоточена на Entity Framework.
Я использовал LINQ to SQL в небольших проектах, и он довольно удобен как легкий слой данных, и я хотел бы рассмотреть его снова в проектах аналогичного размера. Сама реализация LINQ действительно хороша и до недавнего времени была намного лучше, чем проект NHibernate LINQ. В более крупном проекте, в котором я использовал L2S, мне было трудно придумать шаблон единицы работы, который меня устраивал, из-за ограничений класса L2S 'DataContext'. Попытка реализовать что-то вроде «Session per request» в L2S кажется очень сложной или невозможной.
Я также не стал бы рассматривать L2S как истинный ORM, поскольку он действительно не дает вам много вариантов отображения. Ваш дизайн класса действительно должен следовать вашей схеме базы данных (таблица на класс), иначе он будет бороться с вами на каждом этапе пути. Еще одна вещь, которая мне не нравится в L2S, это необходимость использования определенных типов (
EntitySet
иEntityRef
) для обработки коллекций, ссылок и отложенной загрузки. Это означает, что невозможно поддерживать независимость ORM вашей доменной модели без добавления еще одного уровня абстракции.Моя другая проблема с L2S - единственная зависимость от LINQ для генерации запросов. Поставщик LINQ очень хорошо написан и обычно создает достойный SQL для большинства запросов, но у меня есть опасения, что есть более сложные запросы, которые не могут быть хорошо выражены с помощью LINQ. Используя L2S, вам в основном приходится возвращаться к вызову хранимых процедур в этих случаях, в то время как (например) NHibernate имеет несколько API-интерфейсов (поставщик LINQ, QueryOver, HQL и т. Д.), Которые можно использовать, когда вам нужен больший контроль над сгенерированным SQL.
В защите L2S над NHibernate намного меньше накладных расходов на его запуск и запуск в проекте.
источник
Он не умер, так как он все еще работает, но если он не будет развиваться дальше, тогда имеет смысл перейти к чему-то другому.
Однако, если это работает для вашего приложения, нет смысла вносить изменения ради изменений.
источник
более стабильный, чем мертвый imho:
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, если я не ошибаюсь.
источник
Это странно, но я много раз видел это («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.
* Честно говоря, я очень ... одержим семантикой! Прошу прощения, если это раздражает окружающих :)
источник