Как выбрать метод доступа к данным в ASP.NET MVC? - PullRequest
1 голос
/ 05 мая 2009

Я уже некоторое время программирую на C # 2.0 WinForms. Я начинаю изучать ASP.NET, новую инфраструктуру MVC и новые возможности C # 3.5. Я только немного прочитал о LINQ to SQL, но сделал несколько тестовых приложений, чтобы попробовать его. В моих приложениях WinForms у меня обычно был какой-то слой доступа к данным, и я сам писал весь SQL. Конечно, если что-то может сделать это CRUD для меня, я все для этого.

Я следовал инструкциям на веб-сайте www.asp.net/mvc и сделал пример Entity Framework и пример LINQ to SQL. Пока они оба кажутся довольно похожими. LINQ больше похож на SQL, но Entity Framework больше похож на C #.

Мои вопросы:

  1. Один метод лучше другого?
  2. Каковы преимущества одного над другим?
  3. Можно ли увидеть SQL, генерируемый при использовании любого из методов?
  4. Поскольку я новичок в мире ASP, веб-разработчики склоняются в одну сторону?

Ответы [ 2 ]

7 голосов
/ 05 мая 2009

2: Преимущества LINQ-to-SQL просты (но все же хорошо спроектированы), но недостатком является простота; -p

  • LINQ-to-SQL работает только на SQL Server (Entity Framework является подключаемым; сторонние варианты LINQ-to-SQL, такие как DBLinq, охватывают некоторых других провайдеров)
  • Entity Framework поддерживает большую абстракцию между моделью данных (хранилища) и объектной моделью - LINQ-to-SQL - это буквальная таблица / столбец => класс / свойство [| поле]
  • LINQ-to-SQL на самом деле более "завершен" в том, что делает делает:
    • EF не поддерживает UDF
    • EF не поддерживает такие вещи, как вызов подвыражения (для деревьев пользовательских выражений)
    • EF не поддерживает некоторые "очевидные" методы, такие как Single()
    • EF не имеет некоторых оптимизаций TSQL, которые использует LINQ-to-SQL

По сути, EF на данный момент представляет собой нечто большее, чем продукт "v1" (или даже "v0.9"). Однако (и важно) - EF, скорее всего, будет иметь правильную следующую версию в .NET 4.0 и т. Д., Где LINQ-to-SQL увидит гораздо меньше изменений. Он все еще поддерживается , но, как известно, Microsoft выбрала Entity Framework в качестве флагманского продукта (вместо того, чтобы совместно превращать оба продукта по существу друг в друга). Вы должны подумать о долгосрочных планах.

На данный момент Я очень рад использовать LINQ-to-SQL , но EF на долгосрочную перспективу ... поэтому я использую репозиторий и т. Д., Чтобы скрыть некоторую реализацию gory детали - немного дырявое хранилище, , но прагматично .

3: С LINQ-to-SQL назначьте TextReader на dataContext.Log; Console.Out работает хорошо - или у меня есть тот, который пишет в trace.asax. С EF ToTraceString .

4: Я подозреваю, что это сильно ломается по сложности. Люди, использующие SQL Server с простыми моделями, или те, кто счастлив иметь модель хранения, которая вписывается в объектную модель, обычно используют LINQ-to-SQL (из того, что я вижу). Люди с большей сложностью и другими базами данных, как правило, используют NHibernate ;-p А затем некоторые EF. Мне интересно, насколько это изменится, когда EF выйдет в .NET 4.0 ...

0 голосов
/ 05 мая 2009

Используйте тот, который чувствует себя лучше для вас, вашей команды и вашего проекта. На самом деле не имеет значения, как вы получаете доступ к данным, если вы обращаетесь к ним.

Вы можете использовать старый добрый ADO.NET, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...