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

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

30 голосов
/ 22 марта 2009

В чем разница между LINQ to SQL и ADO.net?

Ответы [ 6 ]

29 голосов
/ 22 марта 2009

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

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

8 голосов
/ 22 марта 2009

Вы должны начать с понимания того, что LINQ - это предназначенная Microsoft парадигма для декларативного запроса всех видов структурированных данных с помощью одного инструмента - подумайте «Одно кольцо, чтобы управлять ими всеми». LINQ to SQL - это только первое проявление, реализованное для запроса реляционных баз данных.

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

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

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

7 голосов
/ 22 марта 2009

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

  • В Linq2Sql вы записываете свои запросы в объекты памяти. Несмотря на это, код, который вы пишете, преобразуется в деревья выражений и далее переводится в SQL во время выполнения, когда запрос фактически выполняется. В ADO.Net вы напрямую создаете SQL-запросы, которые запускаются на сервере.
  • Linq2Sql имеет прямую поддержку языков в C # и VB.Net. ADO.Net поддерживает строковый запрос, который поддерживает 0 языков, кроме простой строки.
  • Языковая поддержка в Linq2Sql делает тип запросов безопасным. В ADO.Net все результаты запроса должны быть преобразованы в соответствующий тип, который по существу удаляет проверки безопасности типов.
2 голосов
/ 22 марта 2009

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

1 голос
/ 25 сентября 2013

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

LINQ и ADO.NET http://i.msdn.microsoft.com/dynimg/IC176601.gif

из http://msdn.microsoft.com/library/vstudio/bb399365

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

1 голос
/ 22 марта 2009

ADO.NET - это набор библиотек классов, которые предоставляют базовую инфраструктуру доступа к данным поверх библиотек классов .NET Basic. Он также содержит базовую инфраструктуру 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.

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