Неужели сейчас переходить на LINQ to SQL - плохая идея?

До сих пор я использовал ADO.NET в пользу LINQ to SQL (или Entities). Я начинаю новый проект, который должен быть небольшим, по крайней мере, поначалу, но мне хотелось бы иметь место для дальнейшего расширения.

Я чувствую, что сейчас хорошее время для знакомства с LINQ. Я избегал этого довольно долгое время; однако меня беспокоит текущее направление LINQ to SQL. Я слышал, что LINQ to Entities будет предпочтительным доступом к данным для MS в будущем. Я бы предпочел не вдаваться в LINQ to Entities, потому что: 1.) Скорее всего, более крутая кривая обучения, которую я не хочу сейчас добавлять в микс (уже занят изучением MVC) и 2.) Я слышал, что он не готов для ПРАЙМ-тайм.

Меня беспокоит следующее: если я сейчас начну проект с LINQ to SQL, смогу ли я легко обновить его до LINQ to Entities в будущем?


person Mike    schedule 03.10.2009    source источник


Ответы (6)


LINQ to Entities готов к работе в прайм-тайм, и не обязательно намного круче для изучения. Однако с LINQ to SQL тоже все в порядке, вы узнаете много нового, что будет полезно по мере продвижения вперед.

Короче говоря, выбирайте то, что лучше всего подходит для вашего проекта. Если SQL Server является и останется платформой БД, и если нет необходимости в переназначении таблиц или других изощренных уловок, LINQ to SQL доставит вас туда очень быстро. К тому же это очень эффективно.

person Tor Haugen    schedule 03.10.2009
comment
LINQ to SQL также является хорошим выбором, если вам нравится бездумно перестраивать файл .dbml каждый раз, когда вы вносите изменения в свою базу данных. - person James Jones; 03.10.2009
comment
@James Jones Нет, если вы используете что-то вроде PLINQO - person CitizenBane; 03.10.2009
comment
.... или huagati.com/dbmltools - он позволяет использовать -box Конструктор L2S, но добавляет настоящую синхронизацию «только изменения», соглашения об именах, комментарии к XML-документам, генерацию SQL-DDL-скриптов diff из моделей L2S и т. д. - person KristoferA; 03.10.2009
comment
Есть множество вещей, в которых L2E хорош, но с точки зрения подготовки к работе в L2S практически нет времени на обучение. Вы, безусловно, сможете обновить свой проект до L2E позже. Если вы осторожно применяете шаблон репозитория, переключение фреймворков O / RM довольно тривиально. - person Iain Galloway; 03.10.2009
comment
Потому что исправление зияющих дыр LINQ to SQL с помощью сторонних утилит - это именно то, что я хочу от моего решения ORM. Я говорю именно о таких вещах. Но послушайте, если вы не возражаете против таких вещей, во что бы то ни стало ... Я не буду вас останавливать. - person James Jones; 03.10.2009

Если ваше приложение будет запущено в производство до того, как станет доступен .NET 4.0 SP1, выберите L2S. Linq-to-SQL стабилен, он не исчезнет в ближайшее время и генерирует отличный SQL. EF v1 - нет. Период. Посетите форум MSDN EF, если вы хотите узнать больше. о детских болезнях EFv1.

Подойдет ли EFv2 для этой задачи, еще неизвестно; Я использовал только бета-версию 1, и в ней нет некоторых улучшений, которые, как говорят, есть в более поздних версиях.

Тема «L2S против EF» уже обсуждалась много раз, проверьте:
LINQ в SQL Dead or Alive?

... и лично я думаю, что заявление Андерса Хейлсберга для Redmond Developer News достаточно ясно показывает. «LINQ to SQL не умер. Могу вас заверить, он не мертв. Ничего не исчезнет. Мы никогда этого не делали и никогда не сделаем», - сказал он.

http://reddevnews.com/blogs/desmond-file/2008/12/digital-darwinism.aspx

person KristoferA    schedule 03.10.2009

Microsoft опубликовала заявление о том, что срок службы LINQ to SQL подошел к концу и больше не будет предлагать никаких серьезных улучшений. Ознакомьтесь с их официальным заявлением, покрытым сахаром, здесь. Entity Framework займет его место.

Вот статья в MSDN о том, как перенести проект LINQ to SQL на Entity Framework.

person James Jones    schedule 03.10.2009
comment
Они его не улучшат, но и не отберут. На самом деле то же самое и с Windows Forms, это не значит, что вы не должны его использовать. - person Tor Haugen; 03.10.2009
comment
У Winforms был шанс развиться до того, как WPF взял на себя господство. С другой стороны, LINQ to SQL все еще относительно новый. - person James Jones; 03.10.2009
comment
Но означает ли это, что вам больше не следует его использовать? То, что работает сейчас, будет работать и в будущем, и хотя MS не будет добавлять к нему новые функции, он все равно будет поддерживать это в плане исправлений (я считаю, что некоторые исправления появятся в .NET 4.0). - person JulianR; 03.10.2009
comment
Я никогда не утверждал, что Бивис не должен использовать LINQ to SQL. Я просто изложил факты. Конечно, они все еще поддерживают LINQ to SQL. Но если LINQ to SQL и Entity Framework являются решениями одной и той же проблемы, и MS заявляет, что они остановят разработку на одной платформе в пользу другой, вполне разумно предположить, что сохранившаяся технология является более разумным выбором. Мне нравится LINQ to SQL, и я использовал его, но я думаю (чисто на основе предположений), что он станет рыжеволосым пасынком решений Microsoft ORM. - person James Jones; 03.10.2009
comment
Однако следует задать вопрос: а что, если вам нравятся рыжие? - person Matthew Scharley; 03.10.2009
comment
Дело не в том, грядут ли какие-то серьезные улучшения. Речь идет о выборе правильного инструмента для правильной работы. Я слышал, что колесо уже довольно давно не претерпевает серьезных улучшений! Дело в том, что L2S, скорее всего, без особых усилий получит OP туда, куда он идет. Нет кривой обучения, нет инвестиций. Если проект планируется к выпуску до 4.0, и вам нужно только поддерживать SQL Server, я бы выбрал L2S. Если вы даже немного осторожны, вы можете заменить свой DAL с минимальным воздействием, если MS решит волшебным образом заставить ваш рабочий код L2S перестать работать ... - person Iain Galloway; 03.10.2009
comment
LINQ to SQL еще не подошел к концу, так что вы вряд ли излагаете факты. Дело в том, что Entity Framework получает больше ресурсов, чем LINQ to SQL. - person DamienG; 08.10.2009
comment
Почему MS продолжала поддерживать ORM, который конфликтует в интересах с их основной ORM? Я не понимаю, какой в ​​этом смысл. - person James Jones; 08.10.2009

Люди, которые говорят, что LinqToSql требует минимального обучения, не совсем честны с вами. ADO.NET требует значительного обучения. Любая ORM требует значительного обучения. После того, как вы использовали один ORM, не так уж сложно выбрать другой ORM. Как только вы создадите свою собственную ORM (для удовольствия, не делайте этого по-настоящему), вы действительно поймете, что происходит.

Linq (я не говорю о LinqToSql) - отличная технология, и вы не можете использовать Linq с ADO.NET, вам нужно что-то вроде ORM.

По многим причинам (Linq - одна из наиболее сильных сторон, зрелость ORM - другая), сейчас прекрасное время для перехода от ADO.NET к ORM.

Из того, что я видел, «обновление» проекта с одного ORM на другой (не имеет значения, какие ORM) всегда сложно, если вы действительно не знаете, что делаете, и не сохраняете ORM как можно более слабо связанным со всем остальным. .

Я бы опасался как LinqToSql, так и EntityFramework (также известного как LinqToEntities). Им обоим не хватает некоторых функций, которые вам, вероятно, понадобятся в «реальном мире». Ни один из них не является зрелым или доказанным (как показывают разногласия, которые вы видели в ответах на этот вопрос).

В пространстве .NET есть зрелые, проверенные ORM, и нетрудно понять, какая из них сейчас доминирует.

person Michael Maddox    schedule 04.10.2009
comment
Критика Entity Framework в этом ответе связана с EF 1.0 / 3.5. EF 4 в основном подходит как ORM. - person Michael Maddox; 16.02.2011

Возможно, LINQ to SQL оптимизирован для SQL-сервера, поэтому он лучше подходит для вашей проблемы, чем Entity Framework.

Однако в конечном итоге вы должны учитывать, как долго ваше приложение будет жить и какова будет стоимость «обновления».

person Shiraz Bhaiji    schedule 05.10.2009

Я держался подальше от Microsoft ORM, и я очень рад, что у меня есть. Есть постоянный цикл ажиотажа -> принятие -> осознание слабостей и недостатков -> конец жизни, начните снова.

Не поймите меня неправильно, я большой поклонник .Net, а не ORM Microsoft. Есть лучшие решения.

Я понимаю, что это всего лишь мнение, но я предлагаю его за то, что оно того стоит.

person Matthew Lund    schedule 19.06.2011