Я дебатирую что технологию использовать для предстоящего проекта ASP.NET.
Предположения:
Опции:
Запишите хранимые процедуры и назовите их с ADO.NET. Я могу все еще использовать LinqToObjects, после того как я сделан, заполнив мой DataSet
.
Рычаги, что я знаю Linq уже для изучения LinqToSql.
Анализ:
Я уже знаю, как сделать опцию 1, но я действительно хотел бы использовать Linq исключительно. Проблема с опцией 2 состоит в том, что, согласно всему я читал, LinqToSql будет, вероятно, удерживаться от использования в пользу Платформы Объекта.
Вопросы:
Насколько крутой кривая обучения для LinqToSql, если Вы уже знакомы с другими технологиями Linq?
Действительно ли стоит инвестировать какое-либо время в изучение LinqToSql, учитывая, что это не может быть далее разработано Microsoft?
Понимание LinqToSql поможет мне к одному дню понять Платформу Объекта, или действительно ли они слишком отличаются?
В конечном счете, какую опцию Вы рекомендовали бы для моей ситуации?
Обновление:
Я не хочу, чтобы это потерялось в комментариях: marc_s указал, что LinqToSql далее разрабатывается, по крайней мере, с.NET 4.0. Ссылка: http://damieng.com/blog/2009/06/01/linq-to-sql-changes-in-net-40.
Я не знаю, означает ли это, что LinqToSql имеет будущее, в конце концов, но он действительно делает изучение той технологии немного более привлекательным.
Одна вещь я не спросил в своем исходном сообщении, но должен иметь: дефекты в Платформе Объекта, вероятно, для влияния на этот проект?
Спасибо за ответы до сих пор.
Дальнейший анализ
Вот список недостатков LinqToSql, на основе некоторых комментариев ниже:
Из них объект 1 является самым большим беспокойством мне. Даже с маленьким проектом, изменение неизбежно. Я помню однажды пытающийся использовать разработчика Windows Forms для отображения на базу данных, и она аварийно завершилась в моей поверхности так много раз, я отказался от нее в пользу прокрутки моих собственных классов помощника ADO.NET.
Однако действительно кажется, что SqlMetal смог обрабатывать мои потребности отлично. Я выполняю команду, она повторно создает все с нуля от базы данных, я сделан. Если я сохраняю свою базу данных простой (просто таблицы - никакие хранимые процедуры, представления или функции), возможно, SqlMetal - все, в чем я буду нуждаться.
LINQ в Sql довольно просто, если вы уже знаете LINQ в Xml или объекты (Linq "объекты" - это просто "списки")...
Linq в Sql не устарел от Microsoft, они просто предлагают перейти на EF. Он не будет обновляться.
Linq To Sql можно увидеть почти так же, как EF. С EF можно делать и более сложные вещи, но на базовом уровне почти то же самое (для вашего сайта с 7 таблицами это не имеет никакого значения)
Для вашей ситуации я предлагаю перейти на LINQ. Это весело и быстрее, чем SP + ADO.NET. Использование ORM в настоящее время является почти хорошим выбором. Не использовать его должно быть исключением (для меня)
.Взгляните на Subsonic , это хороший средний уровень простоты использования Linq в SQL и NHibernate.
с subsonic вы получаете некоторые из хороших функций NHibernate, такие как первая разработка модели, автоматическое создание схемы базы данных и поддержка баз данных, отличных от Sql Server.
Существует также хорошая страница сравнения , которая перечисляет различия между тремя ORMS
Я согласен с Давидом Вости, но вы можете рассмотреть другие варианты, например NHibernate (которые также имеют поддержку LINQ).
Текущее воплощение EF не впечатляет - оно создает какой-то действительно неприятный T-SQL, на выполнение которого уходит много времени.
В настоящее время мы используем EF, но это последний раз, когда я выбираю EF для .NET 3.5. Я даю ему еще один шанс в .NET 4, но если он резко не улучшится, я выберу другие варианты (а LINQ к SQL вряд ли будет одним из них)
.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, я сомневаюсь, что вы поймете, что это так.)
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
.