Изучить LinqToSql или придерживаться ADO.NET?

Я дебатирую что технологию использовать для предстоящего проекта ASP.NET.

Предположения:

  • Я буду использовать Visual Studio 2008 SP1 (Платформа.NET 3.5)
  • Бэкенд будет базой данных SQL Server 2005 (или возможно 2008)
  • Код будет написан в C#
  • У меня уже есть опыт с LinqToObjects и LinqToXml
  • У меня также есть опыт с ADO.NET и некоторыми библиотеками, уже созданными
  • Проект является относительно маленьким
  • Веб-сайт покажет приблизительно пять экранов
  • База данных будет иметь, возможно, шесть или семь таблиц
  • Будет, возможно, 25-50 активных пользователей
  • Транзакции в день, вероятно, будут приблизительно 5-10 вершинами
  • Минимальные персональные данные будут храниться
  • Последствия отказа или взламываемого сайта были бы минимальны

Опции:

  1. Запишите хранимые процедуры и назовите их с ADO.NET. Я могу все еще использовать LinqToObjects, после того как я сделан, заполнив мой DataSet.

  2. Рычаги, что я знаю Linq уже для изучения LinqToSql.

Анализ:

Я уже знаю, как сделать опцию 1, но я действительно хотел бы использовать Linq исключительно. Проблема с опцией 2 состоит в том, что, согласно всему я читал, LinqToSql будет, вероятно, удерживаться от использования в пользу Платформы Объекта.

Вопросы:

  1. Насколько крутой кривая обучения для LinqToSql, если Вы уже знакомы с другими технологиями Linq?

  2. Действительно ли стоит инвестировать какое-либо время в изучение LinqToSql, учитывая, что это не может быть далее разработано Microsoft?

  3. Понимание LinqToSql поможет мне к одному дню понять Платформу Объекта, или действительно ли они слишком отличаются?

  4. В конечном счете, какую опцию Вы рекомендовали бы для моей ситуации?

Обновление:

Я не хочу, чтобы это потерялось в комментариях: marc_s указал, что LinqToSql далее разрабатывается, по крайней мере, с.NET 4.0. Ссылка: http://damieng.com/blog/2009/06/01/linq-to-sql-changes-in-net-40.

Я не знаю, означает ли это, что LinqToSql имеет будущее, в конце концов, но он действительно делает изучение той технологии немного более привлекательным.

Одна вещь я не спросил в своем исходном сообщении, но должен иметь: дефекты в Платформе Объекта, вероятно, для влияния на этот проект?

Спасибо за ответы до сих пор.

Дальнейший анализ

Вот список недостатков LinqToSql, на основе некоторых комментариев ниже:

  1. Необходимо постоянно обновлять таблицы и объекты в разработчике, поскольку Вы вносите изменения в базовую базу данных. Нет никакого способа "обновить" или "синхронизировать" его так, чтобы это автоматически распознало изменения.
  2. Управление версиями осложнено тем, что разработчик не генерирует базовые файлы в последовательном порядке.
  3. Разработчик LinqToSql генерирует другой код, чем SqlMetal.
  4. Существуют проблемы/ошибки, включающие нетерпеливую загрузку.

Из них объект 1 является самым большим беспокойством мне. Даже с маленьким проектом, изменение неизбежно. Я помню однажды пытающийся использовать разработчика Windows Forms для отображения на базу данных, и она аварийно завершилась в моей поверхности так много раз, я отказался от нее в пользу прокрутки моих собственных классов помощника ADO.NET.

Однако действительно кажется, что SqlMetal смог обрабатывать мои потребности отлично. Я выполняю команду, она повторно создает все с нуля от базы данных, я сделан. Если я сохраняю свою базу данных простой (просто таблицы - никакие хранимые процедуры, представления или функции), возможно, SqlMetal - все, в чем я буду нуждаться.

5
задан devuxer 24 December 2009 в 00:39
поделиться

5 ответов

LINQ в Sql довольно просто, если вы уже знаете LINQ в Xml или объекты (Linq "объекты" - это просто "списки")...

Linq в Sql не устарел от Microsoft, они просто предлагают перейти на EF. Он не будет обновляться.

Linq To Sql можно увидеть почти так же, как EF. С EF можно делать и более сложные вещи, но на базовом уровне почти то же самое (для вашего сайта с 7 таблицами это не имеет никакого значения)

Для вашей ситуации я предлагаю перейти на LINQ. Это весело и быстрее, чем SP + ADO.NET. Использование ORM в настоящее время является почти хорошим выбором. Не использовать его должно быть исключением (для меня)

.
10
ответ дан 18 December 2019 в 09:07
поделиться

Взгляните на Subsonic , это хороший средний уровень простоты использования Linq в SQL и NHibernate.

с subsonic вы получаете некоторые из хороших функций NHibernate, такие как первая разработка модели, автоматическое создание схемы базы данных и поддержка баз данных, отличных от Sql Server.

Существует также хорошая страница сравнения , которая перечисляет различия между тремя ORMS

0
ответ дан 18 December 2019 в 09:07
поделиться

Я согласен с Давидом Вости, но вы можете рассмотреть другие варианты, например NHibernate (которые также имеют поддержку LINQ).

Текущее воплощение EF не впечатляет - оно создает какой-то действительно неприятный T-SQL, на выполнение которого уходит много времени.

В настоящее время мы используем EF, но это последний раз, когда я выбираю EF для .NET 3.5. Я даю ему еще один шанс в .NET 4, но если он резко не улучшится, я выберу другие варианты (а LINQ к SQL вряд ли будет одним из них)

.
5
ответ дан 18 December 2019 в 09:07
поделиться

1. насколько крута кривая обучения для LinqToSql, если вы уже знакомы. с другими Linq-технологиями?

Для объема проекта, который вы определили, он должен быть минимальным. Делать простые вещи - это грязь, более продвинутые концепции требуют некоторых знаний о том, как это работает под капотом, но опять же, ничто не разрушает землю.

2.Стоит ли инвестировать какое-то время в изучение LinqToSql, учитывая, что он может не будут ли они доработаны Microsoft?

Я бы сказал, что это так, это не сложно подхватить, если вы уже используете Linq-технологии. Кроме того, Microsoft будет продолжать поддерживать и развивать Linq2Sql, как отметил Marc_s. Скотт Хэнселман использует Linq2Sql для своего проекта Nerd Dinner (http://nerddinner.codeplex.com/)

3.Понимание LinqToSql поможет мне однажды понять Entity Framework или они >другие?

Я использовал много Linq2Sql и только очень небольшую часть Entity Framework, они похожи, но разные. Основы во многом одинаковые, и я не участвовал ни в каких супер продвинутых случаях использования.

4.В конечном счете, какой вариант вы бы порекомендовали для моей ситуации?

Если бы я разрабатывал сайт, как вы предложили, я бы серьезно посмотрел на Linq2Sql, вы, вероятно, могли бы заставить основы работать через несколько часов и принять решение, если кривая обучения больше, чем вы хотите иметь дело. (IMHO, я сомневаюсь, что вы поймете, что это так.)

3
ответ дан 18 December 2019 в 09:07
поделиться

1 - Какова круглая кривая обучения для Linq-to-Sql, если вы уже знакомы. с другими Linq-технологиями?

Я бы сказал, что вы рассмотрели, возможно, 50% кривой обучения, но это может быть более или менее, я просто догадываюсь. В LinqToSql гораздо больше, чем просто в Linq.

2 - Стоит ли инвестировать в изучение Linq-To-Sql какое-то время, учитывая, что это может быть не будут далее развиваться Microsoft?

Есть преимущества в изучении ORM. Если бы я собирался изучать ORM, LinqToSql, вероятно, был бы #3 или #4 в моем списке. Сообщение от Microsoft о будущем LinqToSql было облачным в лучшем случае, и они, очевидно, вкладывают больше усилий в EntityFramework в будущем. Microsoft всегда может изменить их мнение, и вы должны прийти к собственным выводам.

3 - Понимание Linq-To-Sql поможет мне когда-нибудь понять EntityFramework. или они слишком разные?

Все ORM имеют похожие функции, и изучение одного ORM поможет вам понять другие ORM. LinqToSql на самом деле имеет ряд тех же функций и недостатков, что и EntityFramework, так что есть больше сходства, чем вы могли бы ожидать. Тем не менее, я бы порекомендовал изучить EntityFramework до LinqToSql.

4 - В конечном счете, какой вариант вы бы порекомендовали для моей ситуации?

Лучшим ORM для .NET 3.5 в подавляющем большинстве ситуаций, безусловно, является NHibernate. NHibernate поддерживает Linq, но он поддерживает его иначе, чем Microsoft ORM. Тем не менее, вы не назвали причин, по которым NHibernate будет превосходить ADO.NET в вашей ситуации. Я бы не рекомендовал для вашей ситуации ни LinqToSql, ни EntityFramework

.
0
ответ дан 18 December 2019 в 09:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: