Подтвердить что ты не робот

LINQ to SQL против ADO.Net

Какая разница между LINQ to SQL и ADO.net?

4b9b3361

Ответ 1

ADO.NET - это базовый API доступа к данным для .NET Framework (как JDBC в Java). Это было со времени первого выпуска .NET.

LINQ to SQL - это структура доступа к данным, основанная на ADO.NET и новые языковые функции, которые делают данные SQL Server доступными изначально в объектно-ориентированном стиле программирования.

Ответ 2

Вам нужно начать с понимания того, что LINQ - это парадигма, предназначенная Microsoft для запроса декларирующих всевозможные структурированные данные одним инструментом - подумайте "One Ring To Rule Them All". LINQ to SQL - это только первое проявление, реализованное для запроса реляционных баз данных.

На самом деле Microsoft имеет смешанное сообщение о связях LINQ с SQL. Я думаю, проблема заключается в том, что она стала понятной как замена других стратегий абстракции, и теперь ее часто рассматривают как способ для программистов избегать необходимости стать квалифицированным специалистом в SQL.

ADO.Net рассматривает OOP как то, что он есть, и реляционные данные как то, что он есть, и ожидает, что вы будете делать все правильно на своих условиях.

Преимущества и недостатки этих двух форумов открыты для обсуждения. Но если вы согласны с тем, что мастера Microsoft Computer Science придумали что-то вроде убер-абстракции для структурированных запросов данных, вы, вероятно, захотите двигаться в этом направлении. Существует некоторое указание на то, что другие поставщики программных продуктов готовы играть вместе, поэтому он может даже не оказаться полностью проприетарным, что было бы хорошо.

Ответ 3

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

  • В Linq2Sql вы записываете свои запросы в объекты памяти. Под капотом, хотя код, который вы пишете, переводится в деревья выражений и затем переводится в SQL во время выполнения, где запрос выполняется. В ADO.Net вы напрямую создаете SQL-запросы, которые запускаются на сервере.
  • Linq2Sql имеет прямую поддержку языка в С# и VB.Net. ADO.Net обеспечивает поддержку строкового запроса, который поддерживает 0 языков, кроме как только необработанную строку.
  • Поддержка языков в Linq2Sql делает запрос безопасным. В ADO.Net все результаты запроса должны быть преобразованы в соответствующий тип, который существенно удаляет проверки безопасности типа.

Ответ 4

Кроме того, не совсем уверен, что я здесь. Но ADO.NET всегда работает в автономном режиме с вашими данными. Я думаю, что LINQ2SQL работает онлайн с вашими данными.

Ответ 5

ADO.NET - это набор библиотек классов, которые обеспечивают базовую инфраструктуру доступа к данным поверх .NET Basic Class Libraries. Он также содержит базовую инфраструктуру LINQ, такую ​​как статический класс Enumerable (предоставляющий LINQ to Object) и интерфейс для выполнения базового запроса с реляционными данными, такими как IQueryable.

LINQ to SQL не является базой данных.

ADO.NET можно рассматривать как структуру доступа к данным, но это может ввести в заблуждение, поскольку ADO.NET не является автономным продуктом. ADP.NET действительно является частью .NET Framework.

LINQ to SQL - это просто реализация LINQ для работы в качестве поставщика данных, который подключается и напрямую сопоставляется с SQL Server. Под LINQ to SQL содержится тяжелое использование классов ADO.NET в пространстве имен System.Data.SqlClient, поэтому оно реализовано поверх ADO.NET, но основное внимание уделяется и имеет особое значение для доступа к SQLServer.

Ответ 6

  На следующей диаграмме представлен обзор того, как ADO.NET LINQ технологии относятся к языкам программирования высокого уровня и LINQ-совместимые источники данных.

LINQ and ADO.NET
(source: microsoft.com)

>

from http://msdn.microsoft.com/library/vstudio/bb399365

LINQ поможет вам интегрировать ADO.NET в ту часть кода, где компилятор может оценить и помочь вам с IntelliSense и так далее. Так что с LINQ вы можете использовать ADO.NET проще...