Я обсуждаю, какую технологию использовать для будущего проекта ASP.NET.
Предположения:
- Я буду использовать Visual Studio 2008 SP1 (.NET Framework 3.5)
- Серверной частью будет база данных SQL Server 2005 (или, возможно, 2008)
- Код будет написан на C #
- У меня уже есть опыт работы с LinqToObjects и LinqToXml
- У меня также есть опыт работы с ADO.NET, и некоторые библиотеки уже созданы
- Проект относительно небольшой
- На сайте будет представлено около пяти экранов
- В базе данных может быть шесть или семь таблиц
- Возможно будет 25-50 активных пользователей
- Транзакций в день, вероятно, будет около 5-10 вершин
- Минимальные персональные данные будут храниться
- Последствия сбоя или взлома сайта будут минимальными
Параметры:
Напишите хранимые процедуры и вызывайте их с помощью ADO.NET. Я все еще могу использовать LinqToObjects, как только я закончу заполнять мой DataSet
.
Используйте то, что я знаю о Linq, уже для изучения LinqToSql.
Анализ:
Я уже знаю, как сделать вариант 1, но я действительно хотел бы использовать исключительно Linq. Проблема с вариантом 2 заключается в том, что, согласно всему, что я прочитал, LinqToSql, вероятно, будет признан устаревшим в пользу Entity Framework.
Вопросы:
Насколько крута кривая обучения для LinqToSql, если вы уже знакомы с другими технологиями Linq?
Стоит ли тратить любое время на изучение LinqToSql, учитывая, что Microsoft может его не развивать?
Поможет ли понимание LinqToSql мне однажды понять Entity Framework или они слишком разные?
В конечном итоге, какой вариант вы бы порекомендовали для моей ситуации?
Обновление:
Я не хочу, чтобы это потерялось в комментариях: marc_s указал, что LinqToSql находится в стадии дальнейшего развития, по крайней мере, начиная с .NET 4.0. Ссылка: http://damieng.com/blog/2009/06/01/linq-to-sql-changes-in-net-40.
Я не знаю, означает ли это, что у LinqToSql есть будущее, но оно делает изучение этой технологии более привлекательным.
Одна вещь, о которой я не спрашивал в своем первоначальном посте, но должна иметь в виду: могут ли недостатки в Entity Framework повлиять на этот проект?
Спасибо за ответы.
Дальнейший анализ
Вот список недостатков LinqToSql, основанный на некоторых комментариях ниже:
- Вы должны постоянно обновлять таблицы и элементы в конструкторе по мере внесения изменений в базовую базу данных. Нет способа «обновить» или «синхронизировать» его, чтобы он автоматически распознавал изменения.
- Управление версиями осложняется тем, что конструктор не создает базовые файлы в согласованном порядке.
- Конструктор LinqToSql генерирует код, отличный от SqlMetal.
- Есть проблемы / ошибки, связанные с энергичной загрузкой.
Из них пункт 1 вызывает наибольшее беспокойство у меня. Даже при небольшом проекте изменения неизбежны. Помню, однажды, когда я пытался использовать дизайнер Windows Forms для сопоставления с базой данных, и это много раз взрывалось у меня на лице, я отказался от него в пользу использования собственных вспомогательных классов ADO.NET.
Тем не менее, похоже, что SqlMetal может отлично справиться с моими потребностями. Я запускаю команду, она восстанавливает все с нуля из базы данных, все готово. Если я сохраню свою базу данных простой (только таблицы - без хранимых процедур, представлений или функций), возможно, SqlMetal - это все, что мне нужно.