В настоящее время лучшие практики Microsoft по созданию уровня данных .NET? А реальность?

13

Команда разработчиков, с которой я работаю, скоро перейдет на .NET 4.0, однако используемая нами библиотека классов доступа к данным все еще использует ADO.NET «classic», то есть SqlDataReader , DataTable и тому подобное. Между тем, похоже, что Microsoft и, вероятно, весь остальной мир продвигаются вперед с Entity Framework и WCF Data Services . В MSDN я не нашел ничего, что указывало бы на то, какая из технологий доступа к данным Microsoft рассматривает как лучшие.

Есть ли у Microsoft предпочтения? Какой доступ к данным в настоящее время использует большинство людей? Есть ли веские причины оставаться с ADO.NET classic и не переходить на Entity Framework?

Т. Вебстер
источник
Хороший вопрос. Один нит: «слой данных» может быть более точным термином. «Уровни» также могут означать части распределенной системы, работающие на отдельных блоках.
ажеглов
1
@azheglov, «слой данных» был моей первой мыслью, но потом я посмотрел на это и решил использовать любую терминологию, которую видел на MSDN: msdn.microsoft.com/en-us/library/bb384398.aspx . Я согласен, что уровень данных более точный, хотя.
Т. Вебстер
Вебстер: спасибо за поиск и уточнение
ажеглов

Ответы:

4

В моей фирме мы используем EF. Это хорошая ORM, подходящая для нашего небольшого проекта. На самом деле люди используют EF или NHibernate. Обе рамки хороши. EF имеет отличную поддержку MS, и вы можете найти отличные инструменты в комплекте с Visual Studio. NHibernate считается лучше, чем EF, но есть большая «кривая обучения», поэтому вы потратите больше времени на его принятие.

Я думаю, что если вы находитесь на Ado.Net "классический" попробуйте EF. Создайте простой проект и замените некоторые методы DAL. Проверьте, как это работает и как вы можете управлять / изменять код. Сравните это с простыми методами «SqlDataReader» и решите, что лучше. Помните, что для каждого технологического сдвига требуется некоторое время для внедрения, поэтому вам необходимо рассчитать, будет ли это изменение полезным для вашей компании в долгосрочной перспективе.

Михал Франк
источник
5

Моя команда находит реальность перехода на EF немного болезненной. Дело не в том, что EF плох или бесполезен, а в том, что конвертация наших существующих уровней данных (довольно массивных) из строго типизированных наборов данных, происходящих из ADO.Net framework 2.0, в EF - это просто большая интенсивная работа, которая на самом деле не приносит нам что-нибудь. Из-за новых вещей мы все еще довольно разорваны, потому что у всех нас есть мнения и цели. Для наших проектов Silverlight мы ориентируемся исключительно на сервисы EF и RIA, но для веб-проектов (веб-форм и MVC 3) мы в основном используем Linq2Sql.

Мы находим меньше головной боли и ускоряем разработку с использованием Linq2Sql, но я знаю, что Microsoft продвигает повестку дня EF (особенно с услугами WCF и RIA). Linq2Sql никуда не денется, но все новые игрушки и интересные функции будут сосредоточены на EF. Я бы сказал, что если у вас есть выбор на раннем этапе, EF будет хорошим началом. Если вы уже в середине потока, я не знаю, что будет очень легко переключаться.

Джоэл Этертон
источник
3

Entity Framework является предпочтительным способом. LinqToSql будет поддерживаться и поддерживаться, но основное внимание при разработке уделяется Entity Framework. Выбор между ADO.NET Entity Framework и LINQ to SQL

klir2m
источник
а чем ты сейчас пользуешься?
Т. Вебстер
2
Я думаю, что все используют linq2sql
Cnd
@nCdy: Хотя некоторые члены нашей команды считают, что Linq2Sql слишком «болтливый», мы все считаем, что EF автоматически генерирует слишком много ненужного мусора, который L2S просто обходит.
Джоэл Этертон