2009-03-22 23 views

Respuesta

29

ADO.NET es la API de acceso a datos subyacente para .NET Framework (como JDBC en Java). Ha existido desde la primera versión de .NET.

LINQ to SQL es un marco de acceso a datos basada en ADO.NET y nuevas características del lenguaje que hace que los datos de SQL Server disponibles de forma nativa en el estilo orientado a objetos de la programación.

7

Hay una bastante grande conjunto de las diferencias entre estas dos tecnologías que no pueden ser realmente cubiertos en un mensaje corto, así, pero voy a tratar de cubrir los aspectos más destacados

  • En Linq2Sql escribir sus consultas a través de objetos de memoria Aunque el código que escribe se traduce a árboles de expresión y se traduce a SQL en tiempo de ejecución donde se ejecuta realmente la consulta. En ADO.Net crea directamente consultas SQL que se ejecutan en el servidor.
  • Linq2Sql tiene soporte de lenguaje directo en C# y VB.Net. ADO.Net proporciona soporte para consultas basadas en cadenas que tienen 0 idiomas que no sean solo una cadena sin formato.
  • El soporte de idiomas en Linq2Sql hace que las consultas sean seguras. En ADO.Net, todos los resultados de la consulta se deben convertir al tipo apropiado, lo que esencialmente elimina los controles de seguridad de tipo.
1

ADO.NET es un conjunto de bibliotecas de clases que proporcionan una infraestructura básica de acceso a datos además de .NET Basic Class Libraries. También contiene la infraestructura LINQ básica, como la clase estática de Enumerable (que proporciona LINQ to Object) y una interfaz para hacer consultas básicas contra datos relacionales como IQueryable.

LINQ to SQL NO es un marco de acceso a datos.

ADO.NET puede ser asumido como un marco de acceso a datos, pero esto puede ser engañoso, ya que ADO.NET no es un producto independiente. ADP.NET es realmente una parte de .NET Framework.

LINQ to SQL es simplemente una aplicación de LINQ para funcionar como un proveedor de datos que se conectan y se asigna directamente a SQL Server. Debajo de LINQ to SQL, contiene muchos usos de clases ADO.NET en el espacio de nombres System.Data.SqlClient, por lo que se implementa sobre ADO.NET pero se centra en y es específico para acceder a SQLServer.

2

Además, no estoy seguro de si estoy aquí. Pero ADO.NET siempre está trabajando 'fuera de línea' con sus datos. Creo que LINQ2SQL está trabajando en línea con tus datos.

+1

Ese no es realmente el caso. Si usa ADO.NET DataAdapter para llenar un DataSet, entonces está trabajando 'fuera de línea'. Sin embargo, con un DataReader estás en línea (conectado) como puede ser .... –

8

Debe comenzar por entender que LINQ es el paradigma previsto por Microsoft para consultar todo tipo de datos estructurados de forma declarativa con una herramienta: piense en "Un anillo para gobernarlos a todos". LINQ to SQL es solo la primera manifestación, implementada para consultar bases de datos relacionales.

De hecho, Microsoft tiene un mensaje mixto sobre la relación de LINQ con SQL. Creo que el problema es que se ha entendido como un sustituto de otras estrategias de abstracción, y ahora se ve a menudo como una forma para que los programadores eviten la necesidad de convertirse en expertos en SQL.

ADO.Net trata programación orientada a objetos como lo que es, y los datos relacionales como lo que es, y espera que usted haga cada correctamente en sus propios términos.

Las ventajas y desventajas de las dos están abiertas a debate.Pero si acepta que los asistentes de informática de Microsoft han encontrado algo así como una súper abstracción para la consulta de datos estructurados, entonces probablemente querrá avanzar en esta dirección. Hay algunos indicios de que otros proveedores de productos de software están dispuestos a seguir el juego, por lo que puede que ni siquiera termine siendo totalmente propietario, lo que sería una buena idea.

1

El siguiente diagrama proporciona una visión general de cómo las tecnologías de ADO.NET LINQ se relacionan con los lenguajes de programación de alto nivel y fuentes de datos habilitados para LINQ.

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

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

LINQ ayuda a integrar ADO.NET en la parte del código que el compilador puede evaluar y ayudarle con IntelliSense y así sucesivamente. Entonces con LINQ puede usar ADO.NET más fácilmente ...